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.