ページ ツリー

比較バージョン

キー

  • この行は追加されました。
  • この行は削除されました。
  • 書式設定が変更されました。

...

Cookbook のディレクトリ構成

パス概要
recipes/

Cookbook の Recipe

を置きます。

を置きます。 

attributes/Recipe で Attribute を使う場合、ここにデフォルト値を定義するファイルを置きます。
templates/Recipe で Template を使う場合、ここに置きます。
filesRecipe で File を使う場合、ここに置きます。
metadata.rbCookbook の名前やバージョン、依存関係などの情報を記述します。
BerksfileCookbook の依存する Cookbook を定義します。
README.mdCookbook の README を記述します。
.kitchen.ymlCookbook のテスト環境を定義します。

...

12

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 コマンドで追加できます。

コード ブロック
$ chef generate recipe <Cookbook のパス> <Recipe の名前>


Resource の要素

Recipe には Resource を定義していきます。
Resource とは、プロビジョニング先の ”ある部分” の ”あるべき状態” を宣言的に定義したもので、具体的には以下の要素で構成されます。

Section
Column

Column

ResourceType

Resource の型を表します。
yum パッケージの状態を定義する yum_package Resource、任意のコマンドの実行状態を定義する execute Resource などがあります。

ResourceType によって、指定できる Attribute や Action は異なります。
詳細は各 ResourceType の公式ドキュメントに記載されているので、確認するようにしてください。

Name

Resource の名前を定義します。
公式ドキュメントを見るとわかりますが、yum_package では Resource の名前がそのまま package_name Attribute になる仕様になっています。

Attribute

Resource の "あるべき状態" について、詳細に定義します。
yum_package であれば version などを指定できます。 

Action

Resource の適用のされ方を定義します。
yum_package であれば、インストールされている状態(:install)、アンインストールされている状態(:remove)などを指定できます。

 

ヒント

ResourceType についての公式ドキュメントは Chef の公式ドキュメントから辿ると非常に見つけにくいです。
Google で「Opscode <ResourceType 名>」などと検索したほうが早く見つけられたりします。
また、Mac であれば Dash に Chef のドキュメントがあるので、これを使うのもオススメです。

 

Resource の実行順序

Recipe は上から順に解釈され、Resource は基本的には Recipe に定義した順で実行されます。に定義した順でキューイングされ、収束されます。
たとえば、「ファイルをダウンロード」してから「ダウンロードしたファイルを解凍」したい場合は、次のように記述できます。 

...