Chef - Proveedor de recursos livianos

Lightweight resource provider (LWRP) ofrece la opción de ampliar la lista de recursos disponibles ampliando sus funciones y permite al usuario de Chef crear recursos personalizados.

Al crear recursos personalizados, uno puede simplemente escribir libros de cocina porque puede poseer recursos personalizados enriquecidos utilizando Chef DSL, que ayuda a hacer que el código de la receta sea más expresivo.

En la comunidad de Chef, muchos de los recursos personalizados se implementan mediante LWRP. Hay muchos ejemplos prácticos de LWRP comoiptables_rules y apt_repository.

Método de trabajo

Asegúrese de que uno tenga el nombre del libro de recetas Testing_resource y una lista de ejecución del nodo que contenga el libro de recetas Testing_resource.

Edificio LWRP

Step 1 - Cree un recurso personalizado en el libro de recetas 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 - Cree un proveedor de recursos en el libro de recetas 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 - Utilice un nuevo recurso editando la receta predeterminada de Testing_resource.

[email protected]:~/chef-repo $ subl cookbooks/Tesing_resource/recipes/default.rb 
greeting "Ohai" do 
   title "Chef" 
   action :create 
end

Step 4 - Cargue el libro de cocina modificado en el servidor de Chef.

[email protected]:~/chef-repo $ knife cookbook upload greeting 
Uploading greeting [0.1.0]

Step 5 - Ejecute Chef-Client en el nodo.

[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 - Validar el contenido del archivo generado.

[email protected]:~$ cat /tmp/greeting.txt 
Ohai, Chef!

Scripts de flujo de trabajo

Los LWRP viven en libros de cocina. Un recurso personalizado vive dentro de los libros de cocina y estará disponible bajo el nombre del libro de cocina. En el flujo de trabajo, primero definimos las definiciones y luego pasamos los atributos a los recursos que se utilizarán en el libro de recetas. Finalmente, usamos esas acciones y atributos en nuestra receta.