Şef - Çevre Değişkeni
Ortam değişkeni, Chef tarifini herhangi bir belirli düğümde başarılı bir şekilde çalıştırmanın önemli bir yoludur. Manuel olarak ayarlamak veya bir Kabuk komut dosyası kullanarak bunu yapmanın birden fazla yolu vardır. Bunları tarif yoluyla ayarlamak, burada gerçekleştirmemiz gereken şeydir.
Bunu yapmak için, burada bir yemek kitabına ihtiyacımız var, test_cookbook kullanacağız ve test_cookbook içeren bir çalıştırma listesi.
Chef Recipe Kullanarak Ortam Değişkenini Ayarlama
Step 1 - Yemek kitabının varsayılan tarifini bir ortam değişkeniyle güncelleyin.
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 - Güncellenen yemek kitabını sunucuya yükleyin.
vipin@laptop:~/chef-repo $ knife cookbook upload test_cookbook
Uploading my_cookbook [0.1.0]
Step 3 - Bir geçici dosya oluşturmak için Şef istemcisini çalıştırmak.
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...
Değişken Doğrulanıyor
user@server:~$ cat /tmp/message
Hello from Chef
Çalışma yöntemi
Ruby, mevcut ortam değişkenini ENV aracılığıyla ortaya çıkarır –a ortam değişkenini okumak ve değiştirmek için hash.
Kaynağı Yürüt
Aynı şeyi, yemek kitabının Şef varsayılan tarifinde yapmak için kaynağı kullanabiliriz.
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 kullanarak bir ortam değişkeni ayarlamak, bu değişkeni tüm Şef çalışması sırasında kullanılabilir hale getirecektir. Bunun aksine, yürütme kaynağına geçirmek, onu yalnızca kaynak tarafından yürütülen tek bir komut için kullanılabilir hale getirecektir.