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.