Chef - Leichter Ressourcenanbieter

Lightweight resource provider (LWRP) bietet eine Option zum Erweitern der Liste der verfügbaren Ressourcen durch Erweitern der Funktionen und ermöglicht es dem Chef-Benutzer, benutzerdefinierte Ressourcen zu erstellen.

Durch das Erstellen benutzerdefinierter Ressourcen kann man einfach Kochbücher schreiben, da man mit Chef DSL angereicherte benutzerdefinierte Ressourcen besitzen kann, um den Rezeptcode ausdrucksvoller zu gestalten.

In der Chef-Community werden viele der benutzerdefinierten Ressourcen mithilfe von LWRPs implementiert. Es gibt viele Arbeitsbeispiele für LWRP wieiptables_rules und apt_repository.

Arbeitsmethode

Stellen Sie sicher, dass einer den Kochbuchnamen Testing_resource und eine Ausführungsliste des Knotens hat, der das Kochbuch Testing_resource enthält.

Gebäude LWRP

Step 1 - Erstellen Sie eine benutzerdefinierte Ressource im Testing_resource-Kochbuch.

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"

Step 2 - Erstellen Sie einen Anbieter für Ressourcen im Tesing_resource-Kochbuch.

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

Step 3 - Verwenden Sie eine neue Ressource, indem Sie das Standardrezept von Testing_resource bearbeiten.

vipin@laptop:~/chef-repo $ subl cookbooks/Tesing_resource/recipes/default.rb 
greeting "Ohai" do 
   title "Chef" 
   action :create 
end

Step 4 - Laden Sie das geänderte Kochbuch auf den Chef-Server hoch.

vipin@laptop:~/chef-repo $ knife cookbook upload greeting 
Uploading greeting [0.1.0]

Step 5 - Führen Sie Chef-Client auf dem Knoten aus.

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...

Step 6 - Überprüfen Sie den Inhalt der generierten Datei.

user@server:~$ cat /tmp/greeting.txt 
Ohai, Chef!

Workflow-Skripte

LWRPs leben in Kochbüchern. Eine benutzerdefinierte Ressource befindet sich in den Kochbüchern und ist unter dem Namen des Kochbuchs verfügbar. Im Workflow definieren wir zuerst die Definitionen und übergeben dann die Attribute an die Ressourcen, die im Kochbuch verwendet werden sollen. Schließlich verwenden wir diese Aktionen und Attribute in unserem Rezept.