2010年3月17日水曜日

Puppetでテンプレートを使ってみた

スズキです。

近頃、Linuxの設定ファイルをPuppetで管理するようになってきたのですが、
マシンごとに設定ファイルを用意するのは面倒なので、
テンプレート機能を使ってみることにしました。

テンプレート自体は、ERBで記述でき、レプリケーション前提の
MySQLの設定ファイル(my.cnf)などは、下記のように記述することができます。

--------【my.cnf】--------
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
server-id=<%= ipaddress.split(".")[3] %>
log-bin=<%= hostname %>-bin
log-output=TABLE,FILE
general_log=1
general_log_file=global.log

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
--------

"server-id"は該当マシンのIPアドレスの最後の数字を利用することにし、
"log-bin"はホスト名を利用するようにしています。

利用できるマシン環境に関する変数は、下記のように"facter"で取得できるものとなります。

# facter
--------
hostname => suz-lab-master-2
ipaddress => 192.168.11.12
...
--------

このテンプレートを利用するには、マニフェスト内で下記のよう
"content => template(テンプレート名)"を使って記述します。

--------【site.pp】--------
file { '/etc/my.cnf':
  owner => 'root',
  group => 'root',
  mode => 644,
  content => template('/var/lib/puppet/files/etc/my.cnf'),
}
--------

その前に、Puppetの設定&起動も記事にしないと...

--------
http://www.suz-lab.com

0 コメント: