Chef - provedor de recursos leve
Lightweight resource provider (LWRP) fornece uma opção de estender a lista de recursos disponíveis, estendendo seus recursos e permite que o usuário Chef crie recursos personalizados.
Ao criar recursos personalizados, pode-se simplesmente escrever livros de receitas porque pode-se possuir recursos personalizados enriquecidos usando Chef DSL, que ajuda a tornar o código da receita mais expressivo.
Na comunidade Chef, muitos dos recursos personalizados são implementados usando LWRPs. Existem muitos exemplos funcionais de LWRP, comoiptables_rules e apt_repository.
Método de trabalho
Certifique-se de que existe um livro de receitas com o nome Testing_resource e uma run_list de nós que contém o livro de receitas Testing_resource.
Construindo LWRP
Step 1 - Crie um recurso personalizado no livro de receitas Testing_resource.
[email protected]:~/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 - Crie um provedor de recursos no livro de receitas Tesing_resource.
[email protected]:~/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 - Use um novo recurso editando a receita padrão Testing_resource.
[email protected]:~/chef-repo $ subl cookbooks/Tesing_resource/recipes/default.rb
greeting "Ohai" do
title "Chef"
action :create
end
Step 4 - Carregue o livro de receitas modificado para o servidor Chef.
[email protected]:~/chef-repo $ knife cookbook upload greeting
Uploading greeting [0.1.0]
Step 5 - Execute Chef-Client no nó.
[email protected]:~$ 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 - Valide o conteúdo do arquivo gerado.
[email protected]:~$ cat /tmp/greeting.txt
Ohai, Chef!
Scripts de fluxo de trabalho
LWRPs vivem em livros de receitas. Um recurso personalizado fica dentro dos livros de receitas e estará disponível com o nome do livro de receitas. No fluxo de trabalho, primeiro definimos as definições e, em seguida, passamos os atributos aos recursos que serão usados no livro de receitas. Finalmente, usamos essas ações e atributos em nossa receita.