シェフ-データバッグ

Chefデータバッグは、クックブックで使用できる任意のデータのコレクションとして定義できます。データバッグの使用は、レシピに属性をハードコーディングしたり、クックブックに属性を保存したりしたくない場合に非常に役立ちます。

作業方法

次の設定では、httpエンドポイントURLと通信しようとしています。このために、エンドポイントURLの詳細を保持し、レシピで使用するデータバッグを作成する必要があります。

Step 1 −データバッグのディレクトリを作成します。

mma@laptop:~/chef-repo $ mkdir data_bags/hooks

Step 2−リクエストビンのデータバッグアイテムを作成します。定義されたrequestBinURLを使用していることを確認する必要があります。

vipi@laptop:~/chef-repo $ subl data_bags/hooks/request_bin.json { 
   "id": "request_bin", 
   "url": "http://requestb.in/1abd0kf1" 
}

Step 3 −Chefサーバーにデータバッグを作成する

vipin@laptop:~/chef-repo $ knife data bag create hooks 
Created data_bag[hooks]

Step 4 −データバッグをChefサーバーにアップロードします。

vipin@laptop:~/chef-repo $ knife data bag from file hooks requestbin.json 
Updated data_bag_item[hooks::RequestBin]

Step 5 −クックブックのデフォルトレシピを更新して、データバッグから必要なクックブックを受け取ります。

vipin@laptop:~/chef-repo $ subl cookbooks/my_cookbook/recipes/default.rb 
hook = data_bag_item('hooks', 'request_bin') 
http_request 'callback' do 
   url hook['url'] 
end

Step 6 −変更したクックブックをChefサーバーにアップロードします。

vipin@laptop:~/chef-repo $ knife cookbook upload my_cookbook 
Uploading my_cookbook [0.1.0]

Step 7 −ノードでChefクライアントを実行して、httpリクエストビンが実行されるかどうかを確認します。

user@server:~$ sudo chef-client 
...TRUNCATED OUTPUT... 
[2013-02-22T20:37:35+00:00] INFO: http_request[callback] 
GET to http://requestb.in/1abd0kf1 successful 
...TRUNCATED OUTPUT...

使い方

データバッグは、構造データエントリの名前付きコレクションです。データ入力を定義し、JSONファイルでデータバッグアイテムを呼び出す必要があります。レシピ内からデータバッグアイテムを検索して、データバッグに保存されているデータを使用することもできます。

フックと呼ばれるデータバッグを作成しました。データバッグは、Chefリポジトリ内のディレクトリです。ナイフを使用してサーバー上に作成しました。