複数の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ノードを追加することで将来拡張できます。 これで、管理対象ノードのマニフェストの作成を開始できます。 しかし、これについては改めて。



All Articles