...
Chef でのプロビジョニングを行うには、まず Resource、Recipe、Cookbook という単語をおさえておきましょう。
これは、Chef を使うにあたって最低限作らなければいけないものです。
Section |
---|
Column |
---|
ResourceResource はプロビジョニング先の "ある部分" の "あるべき状態" を宣言的に定義する DSL です。 各 Resource にはユニークな名前を指定する必要があり、それがプロビジョニング先の ”どの部分か” を表しています。 そして、Resource の do ~ end ブロックに ”あるべき状態” を定義します。(ResourceType によって定義できる内容は異なります。) Chef でのプロビジョニングは、Resource があるべき状態に収束されることを意味します。 RecipeRecipe は Resource を記述するためのファイルです。 Ruby のコードをそのまま使って Resource を定義できます。 Recipe に定義した Resource はプロビジョニングの実行時に解釈され、収束するべき Resource がキューイングされます。 基本的に、Resource は Recipe に定義した順でキューイングされます。 Recipe に書いた Ruby コードは Resource が収束されるときでなく、キューイングされるときに実行されることに注意してください。 CookbookCookbook は Recipe を意味のある単位で取りまとめたものです。 Cookbook は複数の環境で使いまわすことができ、たいていの場合はインストールするアプリケーションやサービス単位で作成されます。 Cookbook も名前で管理されるので、ユニークで、かつ内容を表す名前をつけましょう。 |
|
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.rb | Cookbook の名前やバージョン、依存関係などの情報を記述します。 | Berksfile | Berkshelf の設定ファイルです。 Kitchen でテストをするときに依存する Cookbook |
|
...
を定義します。 | README.md | Cookbook の 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 プロジェクトをインポートしましょう。
...