PuppetでApacheを管理してみる part3
前回に引き続き、Apacheの構成管理をやって見たいと思います。
前回:PuppetでApacheを管理してみる part2 - ressyのナレッジ的なブログ
httpd.confのテンプレートを用意する
前回の記事で作成したマニフェストのうち、ファイルリソースに注目しましょう。
# cat /etc/puppet/modules/http/manifests/init.pp ... # ファイルは、httpd.confのテンプレートを使用する file { '/etc/httpd/conf/httpd.conf': ensure => present, content => template('/etc/puppet/modules/http/templates/httpd.conf'), require => Package['httpd'], } ...
content => template('/etc/puppet/modules/http/templates/httpd.conf')
部分でテンプレートを指定しています。
というわけで、/etc/puppet/modules/http/templates/httpd.conf
を作成します。
httpd.conf
を一から作成するのは大変なので、/etc/httpd/conf/httpd.conf
をコピーして作成します。
ファイルがない場合は、一度yum install -y httpd
をしてファイルを用意しましょう。
(後々構成管理するので、一旦パッケージを入れてしまっても問題ないです。)
# cp -p /etc/httpd/conf/httpd.conf /etc/puppet/modules/http/templates/httpd.conf
httpd.confのテンプレートを編集する
続いて、コピーしたテンプレートを編集していきます。
今回はポート番号で、変数port
で指定できるようにします。
# cat /etc/puppet/modules/http/manifests/init.pp class http( $enabled = 'false', # 変数:運用する/しない $port = '80' # 変数:ポート番号(templatesで使用する予定) ) { ...
この変数port
をテンプレートに適用できるようにします。
テンプレートでListen
を以下のようにしてください。
# vi /etc/puppet/modules/http/templates/httpd.conf ... 127 # 128 # Listen: Allows you to bind Apache to specific IP addresses and/or 129 # ports, in addition to the default. See also the <VirtualHost> 130 # directive. 131 # 132 # Change this to Listen on specific IP addresses as shown below to 133 # prevent Apache from glomming onto all bound IP addresses (0.0.0.0) 134 # 135 #Listen 12.34.56.78:80 136 # Listen 80 137 Listen <%=port %> 138 ...
ポイントは137行目の<%=port %>
です。
ここに、クラスhttp
の変数port
の値が設定されます。
テンプレートの設定は以上です。
マニフェストの適用
各サーバでマニフェストを適用します。
先に--noop
をつけてテストしましょう。
# puppet agent -t --verbose --noop Info: Retrieving pluginfacts Info: Retrieving plugin Info: Caching catalog for web01 Info: Applying configuration version '1479299354' Notice: /Stage[main]/Http/File[/etc/httpd/conf/httpd.conf]/content: --- /etc/httpd/conf/httpd.conf 2016-07-12 20:00:40.000000000 +0900 +++ /tmp/puppet-file20161116-25474-167ozr3-0 2016-11-16 21:29:15.637651861 +0900 @@ -133,6 +133,7 @@ # prevent Apache from glomming onto all bound IP addresses (0.0.0.0) # #Listen 12.34.56.78:80 +# Listen 80 Listen 80 # Notice: /Stage[main]/Http/File[/etc/httpd/conf/httpd.conf]/content: current_value {md5}f6351c6d8c8dfc5899820d8c46d74651, should be {md5}8216a7e8c82725a59cdd504a2a007daa (noop) Info: /Stage[main]/Http/File[/etc/httpd/conf/httpd.conf]: Scheduling refresh of Service[httpd] Notice: /Stage[main]/Http/Service[httpd]: Would have triggered 'refresh' from 1 events Notice: Class[Http]: Would have triggered 'refresh' from 2 events Notice: Stage[main]: Would have triggered 'refresh' from 1 events Notice: Finished catalog run in 0.46 seconds
上記は、WEB01に適用した例です。
マニフェストを適用する様子が読み取れると思います。
エラーや警告が出ていなければ、--noop
を外して適用しましょう。
# puppet agent -t --verbose --noop
これを全てのAgentサーバで実行すればOKです。
以上で、Apacheの簡単な構成管理ができました。
前々回の記事以降で取り上げた内容を活用して、各自好みの構成管理をしてみてください。