Chef - Variabel Lingkungan
Variabel lingkungan adalah cara utama untuk membuat resep Chef berhasil dijalankan pada node tertentu. Ada beberapa cara untuk melakukannya, baik secara manual mengaturnya atau dengan menggunakan skrip Shell. Mengaturnya melalui resep adalah apa yang perlu kita lakukan di sini.
Untuk melakukan ini, kita perlu memiliki buku masak di sini, kita akan menggunakan test_cookbook dan daftar proses yang berisi test_cookbook.
Mengatur Variabel Lingkungan Menggunakan Resep Chef
Step 1 - Perbarui resep default buku masak dengan variabel lingkungan.
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 - Unggah buku masak yang diperbarui ke server.
vipin@laptop:~/chef-repo $ knife cookbook upload test_cookbook
Uploading my_cookbook [0.1.0]
Step 3 - Menjalankan klien Chef untuk membuat file temp.
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...
Memvalidasi Variabel
user@server:~$ cat /tmp/message
Hello from Chef
Metode Kerja
Ruby mengekspos variabel lingkungan saat ini melalui ENV –a hash untuk membaca dan memodifikasi variabel lingkungan.
Jalankan Sumber Daya
Kita bisa menggunakan sumber eksekusi untuk melakukan hal yang sama di dalam resep default buku masak 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- Menyetel variabel lingkungan menggunakan ENV akan membuat variabel itu tersedia selama keseluruhan Chef menjalankan. Sebaliknya, meneruskannya ke sumber yang dieksekusi hanya akan membuatnya tersedia untuk satu perintah yang dieksekusi oleh sumber daya.