Учебники

Шеф-повар — легкий поставщик ресурсов

Облегченный поставщик ресурсов (LWRP) предоставляет возможность расширения списка доступных ресурсов путем расширения его функций и позволяет пользователю Chef создавать собственные ресурсы.

Создавая пользовательские ресурсы, можно просто написать поваренные книги, потому что можно владеть обогащенными пользовательскими ресурсами, используя Chef DSL, что помогает сделать код рецепта более выразительным.

В сообществе Chef многие пользовательские ресурсы реализованы с использованием LWRP. Есть много рабочих примеров LWRP, таких как iptables_rules и apt_repository .

Метод работы

Убедитесь, что у вас есть имя поваренной книги Testing_resource и run_list узла, который содержит поваренную книгу Testing_resource.

Здание LWRP

Шаг 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" 

Шаг 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 

Шаг 3 — Используйте новый ресурс, отредактировав рецепт Testing_resource по умолчанию.

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

Шаг 4 — Загрузите измененную поваренную книгу на сервер Chef.

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

Шаг 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... 

Шаг 6 — Проверьте содержимое сгенерированного файла.

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

Сценарии рабочего процесса

LWRPs живут в кулинарных книгах. Пользовательский ресурс находится внутри поваренных книг и будет доступен под именем поваренной книги. В рабочем процессе сначала мы определяем определения, а затем передаем атрибуты ресурсам, которые будут использоваться в кулинарной книге. Наконец, мы используем эти действия и атрибуты в нашем рецепте.