Конфигурирование puppetdb модуль в использовании Марионетки Hiera

Самый легкий путь состоял бы в том, чтобы заблокировать порты 80 и 443 в брандмауэре для машины, которая размещает Apache. Это выполнило бы внешние запросы, заблокированы в брандмауэре.

1
задан 19 November 2013 в 03:40
1 ответ

Чтобы Puppet мог искать параметры класса в Hiera (что он делает по умолчанию, начиная с 3.0.0), эти параметры должны быть указаны как простые пары ключ-значение, а не как сложные типы данных.

Это как указать параметр datadir класса postgresql :: server в модуле puppetlabs-postgresql , чтобы указать на альтернативный каталог данных для Postgres:

# /etc/puppet/hieradata/foo.example.com.yaml
---
# Puppet automatically looks here for parameters when applying the class postgresql::server
postgresql::server::datadir: /srv/postgres/main

Однако я не думаю, что это то, что вам нужно в вашем случае. Вы хотите указать параметры конфигурации Postgres, для которых вам нужно использовать определенный тип postgresql :: server :: config_entry . В настоящее время в Hiera нет способа поиска параметров типа, который работает только для параметров класса.

Итак, вы либо параметризуете свою роль: postgresql_puppetdb , чтобы вы могли передавать ему параметры класса, которые, в свою очередь, передаются в объявления postgresql :: server :: config_entry , или вы используете функцию create_resources () вместе с помощью hiera_array () или hiera_hash () , чтобы найти настройки конфигурации Postgres, которые вы хотите применить.

Пример для первого подхода:

class role::postgresql_puppetdb (
  wal_level => 'minimal'
  ...
) {

  class { 'postgresql':
     ...
  }

  class { 'puppetdb':
     ...
  }

  postgresql::server::config_entry { 'wal_level':
    value => $role::postgresql_puppetdb::wal_level
  }
}

И затем в Hiera.

# /etc/puppet/hieradata/foo.example.com.yaml
---
role::postgresql_puppetdb::wal_level: hot_standby

Это, очевидно, немного негибко, так как вам необходимо предоставить доступ к каждому настраиваемому параметру и настройке конфигурации, которые предоставляет класс postgresql через ваш класс role :: postgresql_puppetdb . Конечно, этого может быть достаточно для вас, если вы знаете, что вам нужно открыть только несколько таких настроек.

Пример второго подхода:

class role::postgresql_puppetdb {

  class { 'postgresql':
     ...
  }

  class { 'puppetdb':
     ...
  }

  $postgres_config_entries = hiera_hash('postgres_configs', {})

  create_resources('postgresql::server::config_entry', $postgres_config_entries)

}

Затем в Hiera:

# /etc/puppet/hieradata/foo.example.com.yaml
---
postgres_configs:
  wal_level:
    value: hot_standby
  authentication_timeout:
    value: 120s
  krb_server_keyfile:
    value: /var/lib/postgresql/postgresql.keytab

И так далее. Это более гибко и позволяет вам устанавливать произвольные параметры Postgres на каждом уровне иерархии, который вы хотите. В этом случае, конечно, с Hiera будут обращаться к этим параметрам конфигурации только тогда, когда включен класс role :: postgresql_puppetdb , но ничто не мешает вам поместить эту комбинацию hiera_hash-create_resources в другие роли, возможно, в role :: postgresql .

Надеюсь, это было понятно и достаточно логично, чтобы следовать. Вышеупомянутое, конечно, не проверено, как и опубликованное, но мы используем именно эту стратегию (create_resources, hiera_hash) для управления локальными и системными учетными записями, репозиториями, правилами sudoers, экземплярами Tomcat и другими. Вернусь к этому вопросу завтра, когда буду меньше уставать.

Но посмотрите на этот отличный вопрос на Puppet-Ask: https: //ask.puppetlabs. com / question / 1655 / an-end-to-end-roleprofile-example-using-hiera /

Он проходит через аналогичную настройку на основе HAproxy. Очень полезно понять.

4
ответ дан 3 December 2019 в 17:46

Теги

Похожие вопросы