Chef-environment-variable

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

シェフ-環境変数

環境変数は、特定のノードでChefレシピを正常に実行するための重要な方法です。 手動で設定する方法とシェルスクリプトを使用する方法のいずれかで、複数の方法があります。 ここで実行する必要があるのは、レシピを介して設定することです。

これを行うには、test_cookbookとtest_cookbookを含む実行リストを使用するクックブックが必要です。

Chef Recipeを使用した環境変数の設定

  • ステップ1 *-環境変数でクックブックのデフォルトのレシピを更新します。
vipin@laptop:~/chef-repo $ subl cookbooks/test_cookbook/recipes/default.rb
ENV['MESSAGE'] = 'Testing environment variable update with chef !'
execute 'print value of environment variable $MESSAGE' do
   command 'echo $MESSAGE >/tmp/message'
end
  • ステップ2 *-更新されたクックブックをサーバーにアップロードします。
vipin@laptop:~/chef-repo $ knife cookbook upload test_cookbook
Uploading my_cookbook [0.1.0]
  • ステップ3 *-Chefクライアントを実行して一時ファイルを作成します。
user@server:~$ sudo chef-client
...TRUNCATED OUTPUT...
[2013-01-25T15:01:57+00:00] INFO: Processing execute[print
value of environment variable $MESSAGE] action run
(my_cookbook::default line 11)
[2013-01-25T15:01:57+00:00] INFO: execute[print value of
environment variable $MESSAGE] ran successfully
...TRUNCATED OUTPUT...

変数の検証

user@server:~$ cat/tmp/message
Hello from Chef

作業方法

Rubyは、ENV –a ハッシュを介して現在の環境変数を公開し、環境変数を読み取って変更します。

リソースを実行する

実行リソースを使用して、クックブックのChefデフォルトレシピ内で同じことを実行できます。

mma@laptop:~/chef-repo $ subl cookbooks/test_cookbook/recipes/default.rb
execute 'print value of environment variable $MESSAGE' do
   command 'echo $MESSAGE >/tmp/message'
   environment 'MESSAGE' => 'Hello from the execute resource'
end

-ENVを使用して環境変数を設定すると、Chef全体の実行中にその変数が使用可能になります。 対照的に、それを実行リソースに渡すと、リソースによって実行されるその1つのコマンドでのみ使用可能になります。