...
Cookbook のディレクトリ構成
パス | 概要 |
---|---|
recipes/ | Cookbook の Recipe を置きます。を置きます。 |
attributes/ | Recipe で Attribute を使う場合、ここにデフォルト値を定義するファイルを置きます。 |
templates/ | Recipe で Template を使う場合、ここに置きます。 |
files | Recipe で File を使う場合、ここに置きます。 |
metadata.rb | Cookbook の名前やバージョン、依存関係などの情報を記述します。 |
Berksfile | Cookbook の依存する Cookbook を定義します。 |
README.md | Cookbook の README を記述します。 |
.kitchen.yml | Cookbook のテスト環境を定義します。 |
...
1 | 2 |
---|---|
Package Explorer の ▽ を選択 -> Filters… | 「.*resources」のチェックを外す OK |
Recipe を書く
...
default Recipe
chef generate cookbook コマンドを実行すると、./recipes/default.rb というファイルができていると思います。
Cook
Recipe とは
Chef では、サーバーのあるべき状態を Recipe(ソースコード)として記述します。
Recipe は「ファイルのダウンロード」や「コマンドの実行」など、さまざまな機能をもつ Resource から構成されます。
Resource は Chef 公式のものだけで40種類以上ありますが、基本的な構文はどれも同じで、
次のように、ユニークな Name をもち、1つ以上の Attribute によりパラメータを指定でき、実行時の動作を Action で指定します。
コード ブロック |
---|
resource "name" do
attributeA "valueA"
attributeB "valueB"
action :action
end |
次の Recipe は「'/tmp' ディレクトリで、 'tar zxf archive.tar.gz' というスクリプトを、bash で実行する、'extract tar file' という名前の Resource」を定義したものです。
コード ブロック |
---|
bash 'extract tar file' do
cwd '/tmp'
code 'tar zxf archive.tar.gz'
action :run
end |
ここでは Chef 標準の bash Resource をベースに、cwd Attribute に実行時のディレクトリを、code Attribute に実行するスクリプトを指定し、
Action には Resource の実行時にスクリプトが実行されるように :run を指定していて、
これらの指定を行った Resource に 'extract tar file' という Name をつけています。
指定できる Action や Attribute は Resource ごとに異なるので、Resource のドキュメントを逐一確認するようにしてください。
bash Resource であれば ここ です。
...
それが Cookbook がデフォルトで適用する Recipe です。
特別な理由がない限りは default.rb に基本となる Recipe を書いていきます。
ヒント | ||
---|---|---|
default Recipe 以外の Recipe は chef generate recipe コマンドで追加できます。
|
Resource の要素
Recipe には Resource を定義していきます。
Resource とは、プロビジョニング先の ”ある部分” の ”あるべき状態” を宣言的に定義したもので、具体的には以下の要素で構成されます。
Section | ||||||
---|---|---|---|---|---|---|
|
Resource の実行順序
Recipe は上から順に解釈され、Resource は基本的には Recipe に定義した順で実行されます。に定義した順でキューイングされ、収束されます。
たとえば、「ファイルをダウンロード」してから「ダウンロードしたファイルを解凍」したい場合は、次のように記述できます。
...