ページ ツリー

比較バージョン

キー

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

...

Chef でのプロビジョニングを行うには、まず Resource、Recipe、Cookbook という単語をおさえておきましょう。
これは、Chef を使うにあたって最低限作らなければいけないものです。 

Section
Column

Resource

Resource はプロビジョニング先の "ある部分" の "あるべき状態" を宣言的に定義する DSL です。
各 Resource にはユニークな名前を指定する必要があり、それがプロビジョニング先の ”どの部分か” を表しています。
そして、Resource の do ~ end ブロックに ”あるべき状態” を定義します。(ResourceType によって定義できる内容は異なります。)

Chef でのプロビジョニングは、Resource があるべき状態に収束されることを意味します。

Recipe

Recipe は Resource を記述するためのファイルです。
Ruby のコードをそのまま使って Resource を定義できます。 

Recipe に定義した Resource はプロビジョニングの実行時に解釈され、収束するべき Resource がキューイングされます。 
基本的に、Resource は Recipe に定義した順でキューイングされます。
Recipe に書いた Ruby コードは Resource が収束されるときでなく、キューイングされるときに実行されることに注意してください。 

Cookbook

Cookbook は Recipe を意味のある単位で取りまとめたものです。
Cookbook は複数の環境で使いまわすことができ、たいていの場合はインストールするアプリケーションやサービス単位で作成されます。 

Cookbook も名前で管理されるので、ユニークで、かつ内容を表す名前をつけましょう。

Column

 

Cookbook をつくる

Cookbook のひな形の生成

まずは Cookbook を作成しましょう。 

ChefDK の chef generate cookbook コマンドを使えば簡単に Cookbook のひな形を生成できます。

コード ブロック
$ cd workspace
$ chef generate cookbook <Cookbook 名>
情報

Cookbook のディレクトリ構成

パス概要
recipes/

Cookbook の Recipe を置きます。 

attributes/Recipe で Attribute を使う場合、ここにデフォルト値を定義するファイルを置きます。
templates/

...

...

を使う場合、ここに eRuby ファイルを置きます。
files/

...

...

を使う場合、ここにファイルを置きます。
resources/LWRP を使う場合、ここに lightweight resource を置きます。
providers/LWRP を使う場合、ここに lightweight provider を置きます。
metadata.rbCookbook の名前やバージョン、依存関係などの情報を記述します。
BerksfileBerkshelf の設定ファイルです。
Kitchen でテストをするときに依存する Cookbook

...

を定義します。
README.mdCookbook の README を記述します。
.kitchen.yml

...

 

Cookbook のひな形の生成

まずは Cookbook を作成しましょう。 

ChefDK の chef generate cookbook コマンドを使えば簡単に Cookbook のひな形を生成できます。

コード ブロック
$ cd workspace
$ chef generate cookbook <Cookbook 名>

...

 

...

Kitchen の設定ファイルです。
Cookbook のテスト環境を定義します。

 

Cookbook を Eclipse で編集しよう

Eclipse のプロジェクトファイル ".project" をつくっておけば、Cookbook を Eclipse プロジェクトとして開けます。
ツリービューとタブエディタ(だけ)は便利なので、 他によいエディタがない場合は、次の手順で Eclipse プロジェクトをインポートしましょう。

...