LoginSignup
6
6

More than 5 years have passed since last update.

Chef ディレクトリ構成を変えて使用ファイルの効率化

Last updated at Posted at 2014-08-27

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.5CentOS 5.8 の場合は files/centos-5 ディレクトリ内のファイルが使用され、
cook 対象サーバが CentOS 6.2CentOS 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 より引用

  1. node[:fqdn]
  2. node[:platform]-node[:platform_version]
  3. node[:platform]-version_components
  4. node[:platform]
  5. default

例えば cook 対象サーバが CentOS 5.8 の場合、下記のような順序でディレクトリが検索されます。

  1. files/centos-5.8
  2. files/centos-5
  3. files/centos
  4. files/default

もちろん
centos の箇所は、debianubuntu でも使用できます。

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6