PuppetDB Module をインストールしようとしています。この一部には、私が使用しているいくつかの必須のPostgresインスタンスをインストールするためのモジュールがバンドルされています。
主にheiraを使用して、役割を構成し、さまざまなプロパティを設定します。
追加した場合に十分な長さの構成があります
roles:
- role::postgresql_puppetdb
ホスト名のhierayamlファイルにそれが取得され、基本的なpostgresインスタンスがプッシュされます。
特定のpostgresql.conf変数を設定するのに行き詰まっています。たとえば、私は試しました
roles:
- role::postgresql_puppetdb
- wal_level: hot_standby
ただし、それは後続のエージェントの実行時にプッシュされます。
誰かがこの方法でPuppetDB構成をモデル化しようとして、私が間違っていることを指摘したのではないかと期待しています。
PuppetがHieraのクラスパラメーターを検索するには(3.0.0以降、デフォルトで実行されます)、これらのパラメーターは、複雑なデータ型ではなく、単純なキーと値のペアとして指定する必要があります。
これは、Postgresの代替データディレクトリを指すように_postgresql::server
_モジュールのクラス_puppetlabs-postgresql
_のdatadir
パラメータを指定する方法です。
postgresql :: server :: datadir:/ srv/postgres/main
しかし、私はこれがあなたの場合に必要なものではないと思います。 _postgresql::server::config_entry
_で定義されたタイプを使用する必要があるPostgres構成パラメーターを指定する必要があります。現在、Hieraには型パラメーターを検索する方法はなく、クラスパラメーターに対してのみ機能します。
したがって、_role::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 } }
そして、ヒエラで。
#/ etc/puppet/hieradata/foo.example.com.yaml --- role :: postgresql_puppetdb :: wal_level:hot_standby
postgresql
クラスが_role::postgresql_puppetdb
_クラスを通じて提供するすべての調整可能なパラメーターと構成設定を公開する必要があるため、これは明らかに少し柔軟性がありません。もちろん、このような調整可能なものをいくつか公開するだけでよいことがわかっている場合は、これで十分かもしれません。
2番目のアプローチの例:
class role :: postgresql_puppetdb { class {'postgresql': ... } class {'puppetdb': ... } $ postgres_config_entries = hiera_hash( 'postgres_configs'、{}) create_resources( 'postgresql :: server :: config_entry'、$ postgres_config_entries) }
それからヒエラで:
#/ etc/puppet/hieradata/foo.example.com.yaml --- postgres_configs: wal_level: 値:hot_standby authentication_timeout: 値:120s krb_server_keyfile: 値:/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に基づいた同様の設定について説明します。理解するのに非常に役立ちます。