web-dev-qa-db-ja.com

Hieraを使用してPuppetでpuppetdbモジュールを構成する

PuppetDB Module をインストールしようとしています。この一部には、私が使用しているいくつかの必須のPostgresインスタンスをインストールするためのモジュールがバンドルされています。

主にheiraを使用して、役割を構成し、さまざまなプロパティを設定します。

追加した場合に十分な長さの構成があります

roles:
    - role::postgresql_puppetdb

ホスト名のhierayamlファイルにそれが取得され、基本的なpostgresインスタンスがプッシュされます。

特定のpostgresql.conf変数を設定するのに行き詰まっています。たとえば、私は試しました

roles:
   - role::postgresql_puppetdb
      - wal_level: hot_standby

ただし、それは後続のエージェントの実行時にプッシュされます。

誰かがこの方法でPuppetDB構成をモデル化しようとして、私が間違っていることを指摘したのではないかと期待しています。

1
atxdba

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に基づいた同様の設定について説明します。理解するのに非常に役立ちます。

4
daff