Ş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.