Chef - คำจำกัดความ

นิยามสามารถกำหนดเป็นวิธีการเชิงตรรกะในการจัดกลุ่มทรัพยากรซึ่งถูกใช้ซ้ำแล้วซ้ำอีก ในขั้นตอนนี้เราจัดกลุ่มทรัพยากรและตั้งชื่อให้พวกเขาเพื่อให้สามารถอ่านตำราอาหารที่กำหนดไว้ได้อีกครั้ง

ในการทำเช่นนี้เราควรมีสูตรอาหาร ในกรณีนี้เราใช้ test_cookbook และรายการโหนดซึ่งรวมถึงตำราอาหาร

การสร้างคำจำกัดความ

Step 1 - สร้างไฟล์ข้อกำหนดใหม่ในโฟลเดอร์คำจำกัดความของตำราอาหาร

vipin@laptop:~/chef-repo $ subl cookbooks/test_cookbook/definitions/ 
capistrano_deploy_dirs.rb 
define :capistrano_deploy_dirs, :deploy_to => '' do 
   directory "#{params[:deploy_to]}/releases" 
   directory "#{params[:deploy_to]}/shared" 
   directory "#{params[:deploy_to]}/shared/system" 
end

Step 2 - ใช้คำจำกัดความภายในสูตรเริ่มต้นของตำราอาหาร

vipin@laptop:~/chef-repo $ subl cookbooks/test_cookbook/recipes/default.rb 
capistrano_deploy_dirs do 
   deploy_to "/srv" 
end

Step 3 - อัปโหลดตำราอาหารไปยังเซิร์ฟเวอร์พ่อครัว

vipin@laptop:~/chef-repo $ knife cookbook upload test_cookbook 
Uploading test_cookbook [0.1.0]

Step 4 - เรียกใช้ไคลเอ็นต์ Chef บนโหนดที่ต้องการ

vipin@laptop:~/chef-repuser@server $ sudo chef-client 
...TRUNCATED OUTPUT... 
[2013-01-18T16:31:11+00:00] INFO: Processing directory[/srv/ 
releases] action create (my_cookbook::default line 2) 
[2013-01-18T16:31:11+00:00] INFO: directory[/srv/releases] created 
directory /srv/releases 
[2013-01-18T16:31:11+00:00] INFO: Processing directory[/srv/ 
shared] action create (my_cookbook::default line 3) 
[2013-01-18T16:31:11+00:00] INFO: directory[/srv/shared] created 
directory /srv/shared 
[2013-01-18T16:31:11+00:00] INFO: Processing directory[/srv/ 
shared/system] action create (my_cookbook::default line 4) 
[2013-01-18T16:31:11+00:00] INFO: directory[/srv/shared/system]

คำจำกัดความในตำราอาหารเป็นเหมือนไมโครซึ่งจัดกลุ่มทรัพยากรและตั้งชื่อให้ คำจำกัดความมีชื่อที่สามารถบอกได้ซึ่งสามารถเรียกได้จากในสูตรอาหารและมีรายการขอบเขต

ในคำจำกัดความเรามีพารามิเตอร์ซึ่งในโค้ดของเรามีลักษณะดังต่อไปนี้

….. 
directory "#{params[:deploy_to]}/releases" 
directory "#{params[:deploy_to]}/shared" 
directory "#{params[:deploy_to]}/shared/system” 
……

สามารถใช้ได้ภายในสูตรเริ่มต้นดังนี้

capistrano_deploy_dirs do 
   deploy_to "/srv"` 
end