Chef-環境変数
環境変数は、Chefレシピを特定のノードで正常に実行するための重要な方法です。手動で設定する方法とシェルスクリプトを使用する方法のいずれかで、複数の方法があります。レシピを介してそれらを設定することは、ここで実行する必要があることです。
これを行うには、ここにクックブックが必要です。ここでは、test_cookbookと、test_cookbookを含む実行リストを使用します。
シェフレシピを使用した環境変数の設定
Step 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
Step 2 −更新されたクックブックをサーバーにアップロードします。
vipin@laptop:~/chef-repo $ knife cookbook upload test_cookbook
Uploading my_cookbook [0.1.0]
Step 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
Note− ENVを使用して環境変数を設定すると、Chefの実行全体でその変数を使用できるようになります。対照的に、実行リソースに渡すと、リソースによって実行された1つのコマンドでのみ使用可能になります。