Chef により OS や OS のバージョン、ホスト名によってファイルを分別したいと思ったことありませんか?
上記に掲載されておりますが、割と知られていないかもと思いましたので、ご参考になれば。
こういうことが出来る
使用リソース | ファイル配置場所 | 使用されるファイル |
---|---|---|
cookbook_file remote_file |
files/centos-5.10 files/ centos-6.5 files/ default
|
cook 対象サーバが CentOS 5.10 の場合 ココ のファイルcook 対象サーバが CentOS 6.5 の場合 ココ のファイルcook 対象サーバが上記 OS+Version 以外の場合 ココ のファイル |
template | templates/centos-5.10 templates/ centos-6.5 templates/ default
|
cook 対象サーバが CentOS 5.10 の場合 ココ のファイルcook 対象サーバが CentOS 6.5 の場合 ココ のファイルcook 対象サーバが上記 OS+Version 以外の場合 ココ のファイル |
OS のバージョンによって使用する rpm パッケージをディレクトリ毎に分けておくことや、
OS によって設定ファイルを分けることもディレクトリの命名規則だけで可能です。
CentOS 5 系 or 6 系でディレクトリを分ける
下記のようにディレクトリを作成した場合、
files/centos-5
files/centos-6
cook 対象サーバが CentOS 5.5
や CentOS 5.8
の場合は files/centos-5
ディレクトリ内のファイルが使用され、
cook 対象サーバが CentOS 6.2
や CentOS 6.5
の場合は files/centos-6
ディレクトリ内のファイルが使用されます。
ホスト名によりディレクトリを分ける
下記のようなディレクトリを作成した場合、
templates/foo.example.com
templates/bar.example.com
cook 対象サーバが foo.example.com
というホスト名の場合は templates/foo.example.com
内 erb ファイルがテンプレートして使用され、
cook 対象サーバが bar.example.com
というホスト名の場合は templates/bar.example.com
内 erb ファイルがテンプレートして使用されます。
ディレクトリ名とディレクトリ名検索順序
下記順序によってディレクトリ名が検索されます。
node となってる箇所については ohai により cook 対象サーバで収集された情報です。
※ Chef Documents より引用
node[:fqdn]
node[:platform]
-node[:platform_version]
node[:platform]
-version_components
node[:platform]
default
例えば cook 対象サーバが CentOS 5.8
の場合、下記のような順序でディレクトリが検索されます。
- files/
centos-5.8
- files/
centos-5
- files/
centos
- files/
default
もちろん
centos
の箇所は、debian
や ubuntu
でも使用できます。