Chef - Nhà cung cấp tài nguyên nhẹ

Lightweight resource provider (LWRP) cung cấp tùy chọn mở rộng danh sách các tài nguyên có sẵn bằng cách mở rộng các tính năng của nó và cho phép người dùng Chef tạo các tài nguyên tùy chỉnh.

Bằng cách tạo tài nguyên tùy chỉnh, người ta có thể chỉ cần viết sách dạy nấu ăn vì người ta có thể sở hữu các tài nguyên tùy chỉnh phong phú bằng cách sử dụng Chef DSL, giúp làm cho mã công thức trở nên biểu cảm hơn.

Trong cộng đồng Chef, nhiều tài nguyên tùy chỉnh được triển khai bằng LWRP. Có rất nhiều ví dụ hoạt động của LWRP nhưiptables_rulesapt_repository.

Phương pháp làm việc

Đảm bảo rằng một trong số đó có tên sách dạy nấu ăn Testing_resource và danh sách nút chạy có chứa sách dạy nấu ăn Testing_resource.

Xây dựng LWRP

Step 1 - Tạo tài nguyên tùy chỉnh trong sách dạy nấu ăn 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 - Tạo nhà cung cấp cho các tài nguyên trong sách dạy nấu ăn 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 - Sử dụng một tài nguyên mới bằng cách chỉnh sửa công thức mặc định của Testing_resource.

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

Step 4 - Tải sách nấu ăn đã sửa đổi lên máy chủ Chef.

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

Step 5 - Chạy Chef-Client trên nút.

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 - Xác thực nội dung của tệp được tạo.

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

Tập lệnh quy trình làm việc

LWRP có trong sách dạy nấu ăn. Một tài nguyên tùy chỉnh nằm bên trong sách nấu ăn và sẽ có sẵn dưới tên sách nấu ăn. Trong quy trình làm việc, đầu tiên chúng tôi xác định các định nghĩa và sau đó chuyển các thuộc tính cho các tài nguyên sẽ được sử dụng trong sách dạy nấu ăn. Cuối cùng, chúng tôi sử dụng các hành động và thuộc tính đó trong công thức của mình.