ページ ツリー

比較バージョン

キー

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

...

Section
Column

Resource

Resource はプロビジョニング先の "ある部分" の "あるべき状態" を宣言的に記述する DSL です。
Chef でのプロビジョニングは、Resource があるべき状態に収束されることを意味します。

Recipe

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

プロビジョニングを実行すると、Recipe がコンパイルされ、Recipe に定義した Resource が Resource Collection に登録されます。 
Resource の収束は、基本的には Resource Collection に登録された順で行われます。

Cookbook

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

Column

Drawio
diagramNamechef 用語.drawio
revision1

 

Cookbook をつくる

Cookbook のひな形の生成

...

情報

Cookbook のディレクトリ構成

パス概要
recipes/

Cookbook の Recipe を置きます。 

attributes/Recipe で Attribute を使う場合、ここにデフォルト値を定義するファイルを置きます。
templates/Template を使う場合、ここに eRuby ファイルを置きます。
files/File を使う場合、ここにファイルを置きます。
resources/LWRP を使う場合、ここに lightweight resource を置きます。
providers/LWRP を使う場合、ここに lightweight provider を置きます。
metadata.rbCookbook の名前やバージョン、依存関係などの情報を記述します。
BerksfileBerkshelf の設定ファイルです。
Kitchen でテストをするときに依存する Cookbook を定義します。
README.mdCookbook の README を記述します。
.kitchen.ymlKitchen の設定ファイルです。
Cookbook のテスト環境を定義します。

...

chef generate cookbook コマンドを実行すると、./recipes/default.rb というファイルができていると思います。
それが Cookbook がデフォルトで適用する Recipe です。
特別な理由がない限りは default.rb に基本となる
基本的には、このファイルに Recipe を書いていきます。

ヒント

default Recipe 以外の Recipe は chef generate recipe コマンドで追加できます。

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

...

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

Section
Column

ResourceType

Resource の型を表します。

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

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

Name

Resource の名前です。
ユニークな名前を指定します。

Attribute

Resource の属性です。
Resource がどのような状態であるべきか、詳細な情報を指定します。

yum_package であれば package_name や version などを指定できます。
yum_package
 では Resource の Name がそのまま package_name に指定される仕様になっています。

Action

Resource の収束のされ方です。 

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

Column

Drawio
diagramNameyum_package.drawio
revision1

ヒント

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

...