ksaitoの日記

日々試したことの覚え書き

puppetの設定をSubversionで管理する

移転しました。

自動的にリダイレクトします。

puppetは、簡単に複数のサーバの設定を変更できてしまいます。
この設定ファイルをバージョン管理しないで、記憶に頼って管理するのは賢明ではありません。
下記のURLにpuppetの設定ファイルをCVSでバージョン管理する方法があります。
http://reductivelabs.com/trac/puppet/wiki/VersionControlPuppet
同じ方法でSubversionで設定ファイルを管理してみました。
Subversionで下記のようなリポジトリを作ります。

$ svn ls file:///home/puppet/svn/puppet/trunk
Makefile
files/
fileserver.conf
lib/
nodes/
site.pp
$

設定を変更するときには、rootでの作業はやめます。
一般ユーザでSubversionからソースをチェックアウトします。

$ svn co file:///home/puppet/svn/puppet/trunk puppet
A    puppet/files
A    puppet/files/hosts
A    puppet/site.pp
A    puppet/lib
A    puppet/lib/packages.pp
A    puppet/lib/test.pp
A    puppet/nodes
A    puppet/nodes/nodes.pp
A    puppet/fileserver.conf
A    puppet/Makefile
リビジョン 6 をチェックアウトしました。
$

修正を反映するには、URLにあるようなMakefileを使います。

$ cd puppet
$ ls
Makefile  files  fileserver.conf  lib  nodes  site.pp
$ cat Makefile
PUPPET        = /etc/puppet
MKDIR         = mkdir -p
RSYNC         = /usr/bin/rsync -r --exclude CVS

install:
        puppet --noop site.pp
        $(MKDIR) $(PUPPET)/manifests
        $(MKDIR) $(PUPPET)/manifests/lib
        $(MKDIR) $(PUPPET)/manifests/nodes
        $(MKDIR) $(PUPPET)/files
        $(RSYNC) site.pp $(PUPPET)/manifests
        $(RSYNC) --delete lib/ $(PUPPET)/manifests/lib
        $(RSYNC) --delete nodes/ $(PUPPET)/manifests/nodes
        $(RSYNC) --delete files/ $(PUPPET)/files
        $(RSYNC) fileserver.conf $(PUPPET)
$ sudo make
puppet --noop site.pp
mkdir -p /etc/puppet/manifests
mkdir -p /etc/puppet/manifests/lib
mkdir -p /etc/puppet/manifests/nodes
mkdir -p /etc/puppet/files
/usr/bin/rsync -r --exclude CVS site.pp /etc/puppet/manifests
/usr/bin/rsync -r --exclude CVS --delete lib/ /etc/puppet/manifests/lib
/usr/bin/rsync -r --exclude CVS --delete nodes/ /etc/puppet/manifests/nodes
/usr/bin/rsync -r --exclude CVS --delete files/ /etc/puppet/files
/usr/bin/rsync -r --exclude CVS fileserver.conf /etc/puppet
$

このMakefileは、--noopオプションでsite.ppの文法をチェックしてから設定をコピーするのでエラーのある設定が反映されることは防げます。
設定のテストという意味では不十分ですが...
設定ファイルのバージョン管理については、Subversionでソース管理をする場合と同じです。
設定変更したら適切なコメントを付けてコミットする。
タグやブランチを適切に使う。ですね。