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