พ่อครัว - ตัวแปรสภาพแวดล้อม
ตัวแปรสภาพแวดล้อมเป็นวิธีสำคัญที่จะทำให้สูตรเชฟทำงานบนโหนดใด ๆ ได้สำเร็จ มีหลายวิธีในการดำเนินการไม่ว่าจะตั้งค่าด้วยตนเองหรือโดยใช้เชลล์สคริปต์ การตั้งค่าผ่านสูตรเป็นสิ่งที่เราต้องดำเนินการที่นี่
ในการทำเช่นนี้เราต้องมีตำราอาหารที่นี่เราจะใช้ test_cookbook และรายการเรียกใช้ซึ่งมี test_cookbook
การตั้งค่าตัวแปรสภาพแวดล้อมโดยใช้ Chef Recipe
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 แฮชเพื่ออ่านและแก้ไขตัวแปรสภาพแวดล้อม
ดำเนินการทรัพยากร
เราสามารถใช้ execute resource เพื่อทำสิ่งเดียวกันภายในสูตรอาหารเริ่มต้นของ 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 ทั้งหมด ในทางตรงกันข้ามการส่งไปยังรีซอร์ส execute จะทำให้พร้อมใช้งานสำหรับคำสั่งเดียวที่ดำเนินการโดยทรัพยากร