พ่อครัว - บทบาท

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

สร้างบทบาท

vipin@laptop:~/chef-repo $ subl roles/web_servers.rb 
name "web_servers" 
description "This role contains nodes, which act as web servers" 
run_list "recipe[ntp]" 
default_attributes 'ntp' => { 
   'ntpdate' => { 
      'disable' => true 
   } 
}

เมื่อเราสร้างบทบาทได้แล้วเราจำเป็นต้องอัปโหลดไปยังเซิร์ฟเวอร์ Chef

อัปโหลดบทบาทไปยังเซิร์ฟเวอร์เชฟ

vipin@laptop:~/chef-repo $ knife role from file web_servers.rb

ตอนนี้เราต้องกำหนดบทบาทให้กับโหนดที่เรียกว่าเซิร์ฟเวอร์

กำหนดบทบาทให้กับโหนด

vipin@laptop:~/chef-repo $ knife node edit server 
"run_list": [ 
   "role[web_servers]" 
] 
Saving updated run_list on node server

เรียกใช้ Chef-Client

user@server:~$ sudo chef-client 
...TRUNCATED OUTPUT... 
[2013-07-25T13:28:24+00:00] INFO: Run List is [role[web_servers]] 
[2013-07-25T13:28:24+00:00] INFO: Run List expands to [ntp] 
...TRUNCATED OUTPUT...

มันทำงานอย่างไร

  • กำหนดบทบาทในไฟล์ Ruby ภายในโฟลเดอร์ role ของที่เก็บ Chef

  • บทบาทประกอบด้วยชื่อและแอตทริบิวต์คำอธิบาย

  • บทบาทประกอบด้วยรายการรันเฉพาะบทบาทและการตั้งค่าแอ็ตทริบิวต์เฉพาะบทบาท

  • ทุกโหนดที่มีบทบาทในรายการที่เรียกใช้จะมีรายการเรียกใช้ของบทบาทที่กำหนดไว้เป็นของตัวเอง

  • สูตรอาหารทั้งหมดในรายการเรียกใช้ของบทบาทจะดำเนินการบนโหนด

  • บทบาทจะถูกอัปโหลดไปยังเซิร์ฟเวอร์ Chef โดยใช้บทบาทมีดจากคำสั่งไฟล์

  • บทบาทจะถูกเพิ่มลงในรายการรันโหนด

  • การรันไคลเอ็นต์ Chef บนโหนดที่มีบทบาทในรายการรันจะดำเนินการตามสูตรอาหารทั้งหมดที่ระบุไว้ในบทบาท