Облегченный поставщик ресурсов (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 живут в кулинарных книгах. Пользовательский ресурс находится внутри поваренных книг и будет доступен под именем поваренной книги. В рабочем процессе сначала мы определяем определения, а затем передаем атрибуты ресурсам, которые будут использоваться в кулинарной книге. Наконец, мы используем эти действия и атрибуты в нашем рецепте.