複数のPuppetマスターを使用してOpenSource Puppet 4をデプロイします。 パートIII。 Puppetを使用したPuppet-dbのセットアップ

複数のPuppetマスターを使用したOpenSource Puppet 4のデプロイ。 パートI.準備
複数のPuppetマスターを使用したOpenSource Puppet 4のデプロイ。 パートII Puppet Mastersのセットアップ

Puppetを使用したPuppet-dbのセットアップ


puppet-environments.gitリポジトリでpuppet-dbノードの設定を設定します。

標準のdatadir postgresqlの場合


puppet-environments.gitリポジトリのmanifests / nodes.ppファイルで、puppet-db設定を追加します。

node default { } node puppet-db { class { 'puppetdb': listen_addresses => '0.0.0.0', } } 

postgresqlのdatadirのカスタム配置の場合


ケンバーバーのセットアップの助けに感謝したい。 最初に、puppet-dbモジュールリポジトリのクローンを作成し、postgresqlデータの配置に関して変更を加え、すでに変更されたモジュールをインストールしました。 彼はより良い方法を提案しました。

 node default { } node 'puppet-db.example.com' { class { 'puppetdb': listen_address => '0.0.0.0', manage_dbserver => false, } class { '::postgresql::globals': manage_package_repo => true, version => '9.4', } class { '::postgresql::server': datadir => '/media/data/postgresql/9.4/main', } postgresql::server::extension { 'pg_trgm': database => 'puppetdb', } } 

非標準のデータベース配置を使用する場合は、/ media / data / postgresql / 9.4 / mainディレクトリを作成することを忘れないでください。

 aspetrenko@puppet-db:~$ sudo mkdir -p /media/data/postgresql/9.4 

リポジトリへの変更のコミット


リポジトリに変更をコミットして、Puppetサーバーにアクセスできるようにします。 postgresql datadirデプロイメントの場合:

 aspetrenko@aspetrenko-pc:~/sgl-git/puppet-environments$ git add manifests/nodes.pp aspetrenko@aspetrenko-pc:~/sgl-git/puppet-environments$ git commit manifests/nodes.pp -m "Add puppet-db config to nodes.pp" aspetrenko@aspetrenko-pc:~/sgl-git/puppet-environments$ git push -u origin production 

puppet-db設定の適用


puppet-dbサーバーの/etc/puppetlabs/puppet/puppet.confでpuppetmaster設定を忘れずに設定してください。

puppet-dbサーバーの証明書をpuppet-master01に追加するリクエストを送信します。

 aspetrenko@puppet-db:~$ sudo -i puppet agent --enable aspetrenko@puppet-db:~$ sudo -i puppet agent --test --waitforcert 60 

puppet-master01の証明書を確認します。

 aspetrenko@puppet-master01:/etc/puppetlabs/code/environments/production$ sudo -i puppet cert list "puppet-db.example.com" (SHA256) 9C:98:4C:D8:A9:B6:9D:27:5A:9D:A8:5F:15:E2:D8:99:6F:CF:0E:34:5B:B5:5C:BC:23:0D:6E:E0:84:BA:3F:05 aspetrenko@puppet-master01:/etc/puppetlabs/code/environments/production$ sudo -i puppet cert --sign puppet-db.example.com Signing Certificate Request for: "puppet-db.example.com" (SHA256) 9C:98:4C:D8:A9:B6:9D:27:5A:9D:A8:5F:15:E2:D8:99:6F:CF:0E:34:5B:B5:5C:BC:23:0D:6E:E0:84:BA:3F:05 

その後、nodes.ppで行われた設定がpuppet-dbに自動的に適用されます。postgresqlサーバーとpuppet-dbサービスがインストールおよび構成されます。

puppet-master01とpuppet-master02をpuppet-dbに接続します


manifests / nodes.ppファイルに次の行を追加します。

 node 'puppet-master01.example.com' { class { 'puppetdb::master::config': puppetdb_server => 'puppet-db.example.com', } } node 'puppet-master02.example.com' { class { 'puppetdb::master::config': puppetdb_server => 'puppet-db.example.com', } } 

または、ntp設定が必要な場合(hieraを使用しない場合):

 node 'puppet-master01.example.com' { class {'::ntp': servers => [ 'time.example.com', '0.pool.ntp.org' ], } class { 'puppetdb::master::config': puppetdb_server => 'puppet-db.example.com', } } node 'puppet-master02.example.com' { class {'::ntp': servers => [ 'time.example.com', '0.pool.ntp.org' ], } class { 'puppetdb::master::config': puppetdb_server => 'puppet-db.example.com', } } 

変更をリポジトリにコミットします。

 aspetrenko@aspetrenko-pc:~/sgl-git/puppet-environments$ git commit manifests/nodes.pp -m "Setup puppet-db server for puppet-master01 and puppet-master02" 

そして、変更をgitolite3サーバーに送信します。

 aspetrenko@aspetrenko-pc:~/sgl-git/puppet-environments$ git push -u origin production 

puppet-master01サーバーとpuppet-master02サーバーで変更を適用します。

 sudo -i puppet agent --test 

puppet-master01およびpuppet-master02のpuppet-dbの接続設定が適用されるかどうかを確認します。

 cat /etc/puppetlabs/puppet/puppetdb.conf [main] server_urls = https://puppet-db.example.com:8081/ soft_write_failure = false 

puppet-master01およびpuppet-master02のntp設定が適用されるかどうかを確認します。

 cat /etc/ntp.conf | grep server # Set up servers for ntpd with next options: # server - IP address or DNS name of upstream NTP server # prefer - select preferrable server server time.example.com iburst server 0.pool.ntp.org iburst 

Hieraセットアップ


hieraのデバッグを簡素化するために、puppet-master01およびpuppet-master02のhiera構成ファイルへのシンボリックリンクを作成します。

 sudo ln -s /etc/puppetlabs/puppet/hiera.yaml /etc/hiera.yaml 

マニフェスト/ site.ppファイルを作成し、hiera_include( 'classes')を使用してhieraをアタッチします。 site.ppの内容:

 aspetrenko@aspetrenko-pc:~/sgl-git/puppet-environments$ cat manifests/site.pp hiera_include('classes') 

/etc/puppetlabs/puppet/hiera.yamlファイル内のpuppet-master01サーバーとpuppet-master02サーバーでは、デフォルトで階層設定が設定されています。

 :hierarchy: - "nodes/%{::trusted.certname}" - common 

common.yamlファイルでデフォルト構成を作成します。これはすべてのノードに適用され、ntpクライアント設定を設定します。

 aspetrenko@aspetrenko-pc:~/sgl-git/puppet-environments$ cat hieradata/common.yaml --- classes: - ntp ntp::servers: - time.example.com # - 1.pool.ntp.org # - 2.pool.ntp.org # - 3.pool.ntp.org 

hieraの個々のノードの構成を保存するディレクトリを作成します。

 aspetrenko@aspetrenko-pc:~/sgl-git/puppet-environments$ mkdir hieradata/nodes 

構成ファイルの名前は、ノード証明書の名前に対応します(%{:: trusted.certname})。

上記のマニフェスト/ nodes.ppで設定されたものと同じ設定であるhieraを使用した代替実装


Puppet-masterの構成


 aspetrenko@aspetrenko-pc:~/sgl-git/puppet-environments$ cat hieradata/nodes/puppet-master01.example.com.yaml --- classes: - puppetdb::master::config puppetdb::master::config::puppetdb_server: 'puppet-db.example.com' 

同様に、ファイルhieradata / nodes / puppet-master02.example.comで。

puppet-dbの構成


postgresqlの標準のdatadir配置


postgresqlの標準のdatadirレイアウトの場合、すべてが簡単です:

 aspetrenko@aspetrenko-pc:~/sgl-git/puppet-environments$ cat hieradata/nodes/puppet-db.example.com.yaml --- classes: - puppetdb puppetdb::listen_address: '0.0.0.0' 

postgresqlのカスタム配置datadir


しかし、この場合、単純な解決策はありませんでした。 puppet-dbが機能するために、postgresqlにpg_trgm拡張が存在することがどれほど重要かはわかりません。 念のため、この拡張機能を削除しないことにしました。

実際、hieraでは、Puppet言語のように、リソースを取得して宣言する(リソースタイプを定義する)だけではできません。

  postgresql::server::extension { 'pg_trgm': database => 'puppetdb', } 

hieraを使用してリソースを追加するためのあまり良くないオプションをいくつか試しました。

serverfault.com/questions/549720/hiera-include-equivalent-for-resource-types/549807
graviline.ru/index/show/41130

tedivm-hieraticモジュールが見つかるまで。 モジュールの作成者はPuppet 3.xのサポートを主張していますが、Puppet 4では機能しました。 Puppetfileでは、別のモジュールを登録する必要があります。

 mod 'tedivm-hieratic' # Hieratic allows Puppet Resources to be created directly in Hiera. 

manifests / site.ppファイルにhieraticを含めます:

 include hieratic 

そして、postgresql hieradata / nodes / puppet-db.yamlの非標準のdatadir配置の設定を設定することが可能になります:

 --- classes: - puppetdb - postgresql::globals - postgresql::server puppetdb::listen_address: '0.0.0.0' puppetdb::manage_dbserver: false postgresql::globals::manage_package_repo: true postgresql::globals::version: '9.4' postgresql::server::datadir: '/media/data/postgresql/9.4/main' postgresql_server_extension: pg_trgm: name: 'pg_trgm' database: 'puppetdb' 

設定アプリケーション


hieraを介してノードを構成した場合、manifets / nodes.ppからノード設定を削除することを忘れないでください。
変更のコミット:

 aspetrenko@aspetrenko-pc:~/sgl-git/puppet-environments$ git add --all aspetrenko@aspetrenko-pc:~/sgl-git/puppet-environments$ git commit -a -m "Hiera config" aspetrenko@aspetrenko-pc:~/sgl-git/puppet-environments$ git push -u origin production 

puppet-dbへの設定の適用:

 aspetrenko@puppet-db:~$ sudo -i puppet agent --test 

その結果、Puppetインフラストラクチャを取得します。これは、既存のサーバーの負荷が増加したときに、puppet-masterノードを追加することで将来拡張できます。 これで、管理対象ノードのマニフェストの作成を開始できます。 しかし、これについては改めて。

Source: https://habr.com/ru/post/J316486/


All Articles