เชฟ - ผู้ให้บริการทรัพยากรน้ำหนักเบา

Lightweight resource provider (LWRP) ให้ตัวเลือกในการขยายรายการทรัพยากรที่มีอยู่โดยการขยายคุณสมบัติและอนุญาตให้ผู้ใช้ Chef สร้างทรัพยากรที่กำหนดเอง

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

ในชุมชน Chef มีการนำทรัพยากรแบบกำหนดเองจำนวนมากมาใช้โดยใช้ LWRP ตัวอย่างการทำงานของ LWRP มีมากมายเช่นiptables_rules และ apt_repository.

วิธีการทำงาน

ตรวจสอบว่ามีชื่อตำราอาหาร Testing_resource และ run_list ของโหนดซึ่งมีตำราอาหาร Testing_resource

อาคาร LWRP

Step 1 - สร้างทรัพยากรที่กำหนดเองในตำราอาหาร Testing_resource

vipin@laptop:~/chef-repo $ subl cookbooks/Testing_resource/resources/default.rb 
actions :create, :remove 
attribute :title, kind_of: String, default: "World" 
attribute :path, kind_of: String, default: "/tmp/greeting.txt"

Step 2 - สร้างผู้ให้บริการทรัพยากรในตำราอาหาร Tesing_resource

vipin@laptop:~/chef-repo $ subl cookbooks/Testing_resource/provider/default.rb 
action :create do 
   log "Adding '#{new_resource.name}' greeting as #{new_resource. 
      path}" 
   file new_resource.path do 
      content "#{new_resource.name}, #{new_resource.title}!" 
      action :create 
end  
action :remove do 
   Chef::Log.info "Removing '#{new_resource.name}' greeting #{new_resource.path}" 
   file new_resource.path do 
      action :delete 
   end 
end

Step 3 - ใช้ทรัพยากรใหม่โดยแก้ไขสูตรเริ่มต้นของ Testing_resource

vipin@laptop:~/chef-repo $ subl cookbooks/Tesing_resource/recipes/default.rb 
greeting "Ohai" do 
   title "Chef" 
   action :create 
end

Step 4 - อัปโหลดตำราอาหารที่แก้ไขไปยังเซิร์ฟเวอร์ Chef

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

Step 5 - เรียกใช้ Chef-Client บนโหนด

vipin@server:~$ sudo chef-client 
...TRUNCATED OUTPUT... 
2013-06-28T21:32:54+00:00] INFO: Processing greeting[Ohai] action 
create (greeting::default line 9) 
[2013-06-28T21:32:54+00:00] INFO: Adding 'Ohai' greeting as /tmp/ 
greeting.txt 
[2013-06-28T21:32:54+00:00] INFO: Processing file[/tmp/greeting. 
txt] action create (/srv/chef/file_store/cookbooks/greeting/ 
providers/default.rb line 7) 
[2013-06-28T21:32:54+00:00] INFO: entered create 
[2013-06-28T21:32:54+00:00] INFO: file[/tmp/greeting.txt] created 
file /tmp/greeting.txt 
...TRUNCATED OUTPUT...

Step 6 - ตรวจสอบเนื้อหาของไฟล์ที่สร้างขึ้น

user@server:~$ cat /tmp/greeting.txt 
Ohai, Chef!

สคริปต์เวิร์กโฟลว์

LWRP อยู่ในตำราอาหาร ทรัพยากรที่กำหนดเองอาศัยอยู่ในตำราอาหารและจะพร้อมใช้งานภายใต้ชื่อตำราอาหาร ในเวิร์กโฟลว์อันดับแรกเรากำหนดคำจำกัดความจากนั้นส่งแอตทริบิวต์ไปยังทรัพยากรที่จะใช้ในตำราอาหาร สุดท้ายเราใช้การกระทำและคุณลักษณะเหล่านั้นในสูตรของเรา