Chef - Fournisseur de ressources léger

Lightweight resource provider (LWRP) fournit une option pour étendre la liste des ressources disponibles en étendant ses fonctionnalités et permet à l'utilisateur Chef de créer des ressources personnalisées.

En créant des ressources personnalisées, on peut simplement écrire des livres de recettes, car on peut posséder des ressources personnalisées enrichies en utilisant Chef DSL, ce qui aide à rendre le code de recette plus expressif.

Dans la communauté Chef, de nombreuses ressources personnalisées sont implémentées à l'aide de LWRP. Il existe de nombreux exemples de travail de LWRP tels queiptables_rules et apt_repository.

Méthode de travail

Assurez-vous que l'un d'entre eux a le nom de livre de recettes Testing_resource et une run_list de noeud contenant le livre de recettes Testing_resource.

Bâtiment LWRP

Step 1 - Créez une ressource personnalisée dans le livre de recettes 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 - Créez un fournisseur de ressources dans le livre de recettes 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 - Utilisez une nouvelle ressource en éditant la recette par défaut de Testing_resource.

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

Step 4 - Téléchargez le livre de recettes modifié sur le serveur Chef.

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

Step 5 - Exécutez Chef-Client sur le nœud.

[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 - Validez le contenu du fichier généré.

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

Scripts de workflow

Les LWRP vivent dans des livres de cuisine. Une ressource personnalisée se trouve à l'intérieur des livres de recettes et sera disponible sous le nom du livre de recettes. Dans le flux de travail, nous définissons d'abord les définitions, puis nous transmettons les attributs aux ressources qui seront utilisées dans le livre de recettes. Enfin, nous utilisons ces actions et attributs dans notre recette.