Chef-data-bags

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

シェフ-データバッグ

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

作業方法

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

  • ステップ1 *-データバッグ用のディレクトリを作成します。
mma@laptop:~/chef-repo $ mkdir data_bags/hooks
  • ステップ2 *-リクエストビンのデータバッグアイテムを作成します。 定義されたrequestBin URLを使用していることを確認する必要があります。
vipi@laptop:~/chef-repo $ subl data_bags/hooks/request_bin.json {
   "id": "request_bin",
   "url": "http://requestb.in/1abd0kf1"
}
  • ステップ3 *-Chefサーバーでデータバッグを作成する
vipin@laptop:~/chef-repo $ knife data bag create hooks
Created data_bag[hooks]
  • ステップ4 *-データバッグをChefサーバーにアップロードします。
vipin@laptop:~/chef-repo $ knife data bag from file hooks requestbin.json
Updated data_bag_item[hooks::RequestBin]
  • ステップ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
  • ステップ6 *-変更したクックブックをChefサーバーにアップロードします。
vipin@laptop:~/chef-repo $ knife cookbook upload my_cookbook
Uploading my_cookbook [0.1.0]
  • ステップ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リポジトリ内のディレクトリです。 サーバーでナイフを作成しました。