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でソース管理をする場合と同じです。
設定変更したら適切なコメントを付けてコミットする。
タグやブランチを適切に使う。ですね。