Chef-definition

提供:Dev Guides
移動先:案内検索

シェフ-定義

定義は、繰り返し使用されるリソースをグループ化する論理的な方法として定義できます。 このフローでは、リソースをグループ化し、定義されたクックブックを読みやすくするためにリソースに名前を付けます。

これを行うには、レシピが必要です。 この場合、test_cookbookとクックブックを含むノードの実行リストを使用しています。

定義を作成する

  • ステップ1 *-クックブック定義フォルダーに新しい定義ファイルを作成します。
vipin@laptop:~/chef-repo $ subl cookbooks/test_cookbook/definitions/
capistrano_deploy_dirs.rb
define :capistrano_deploy_dirs, :deploy_to => '' do
   directory "#{params[:deploy_to]}/releases"
   directory "#{params[:deploy_to]}/shared"
   directory "#{params[:deploy_to]}/shared/system"
end
  • ステップ2 *-クックブックのデフォルトレシピ内で定義を使用します。
vipin@laptop:~/chef-repo $ subl cookbooks/test_cookbook/recipes/default.rb
capistrano_deploy_dirs do
   deploy_to "/srv"
end
  • ステップ3 *-クックブックをchefサーバーにアップロードします。
vipin@laptop:~/chef-repo $ knife cookbook upload test_cookbook
Uploading test_cookbook [0.1.0]
  • ステップ4 *-目的のノードでChefクライアントを実行します。
vipin@laptop:~/chef-repuser@server $ sudo chef-client
...TRUNCATED OUTPUT...
[2013-01-18T16:31:11+00:00] INFO: Processing directory[/srv/
releases] action create (my_cookbook::default line 2)
[2013-01-18T16:31:11+00:00] INFO: directory[/srv/releases] created
directory/srv/releases
[2013-01-18T16:31:11+00:00] INFO: Processing directory[/srv/
shared] action create (my_cookbook::default line 3)
[2013-01-18T16:31:11+00:00] INFO: directory[/srv/shared] created
directory/srv/shared
[2013-01-18T16:31:11+00:00] INFO: Processing directory[/srv/
shared/system] action create (my_cookbook::default line 4)
[2013-01-18T16:31:11+00:00] INFO: directory[/srv/shared/system]

クックブックの定義は、リソースをグループ化して名前を付けるマイクロのようなものです。 定義には、レシピの内部から呼び出すことができる名前があり、境界のリストがあります。

定義には、コード内で次のように見えるパラメーターがあります。

…..
directory "#{params[:deploy_to]}/releases"
directory "#{params[:deploy_to]}/shared"
directory "#{params[:deploy_to]}/shared/system”
……

次のようにデフォルトのレシピ内で使用できます。

capistrano_deploy_dirs do
   deploy_to "/srv"`
end