พ่อครัว - ตัวแปรสภาพแวดล้อม

ตัวแปรสภาพแวดล้อมเป็นวิธีสำคัญที่จะทำให้สูตรเชฟทำงานบนโหนดใด ๆ ได้สำเร็จ มีหลายวิธีในการดำเนินการไม่ว่าจะตั้งค่าด้วยตนเองหรือโดยใช้เชลล์สคริปต์ การตั้งค่าผ่านสูตรเป็นสิ่งที่เราต้องดำเนินการที่นี่

ในการทำเช่นนี้เราต้องมีตำราอาหารที่นี่เราจะใช้ 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 จะทำให้พร้อมใช้งานสำหรับคำสั่งเดียวที่ดำเนินการโดยทรัพยากร