Chef - fornitore di risorse leggere
Lightweight resource provider (LWRP) fornisce un'opzione per estendere l'elenco delle risorse disponibili estendendone le funzionalità e consente all'utente di Chef di creare risorse personalizzate.
Creando risorse personalizzate si possono semplicemente scrivere libri di cucina perché si possono possedere risorse personalizzate arricchite utilizzando Chef DSL che aiuta a rendere il codice della ricetta più espressivo.
Nella comunità di Chef, molte delle risorse personalizzate vengono implementate utilizzando LWRP. Ci sono molti esempi funzionanti di LWRP comeiptables_rules e apt_repository.
Metodo di lavoro
Assicurati che uno abbia il nome del ricettario Testing_resource e un run_list del nodo che contenga Testing_resource ricettario.
Costruire LWRP
Step 1 - Crea una risorsa personalizzata nel ricettario 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 - Crea un provider per le risorse nel ricettario 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 - Usa una nuova risorsa modificando la ricetta predefinita di Testing_resource.
[email protected]:~/chef-repo $ subl cookbooks/Tesing_resource/recipes/default.rb
greeting "Ohai" do
title "Chef"
action :create
end
Step 4 - Carica il ricettario modificato sul server Chef.
[email protected]:~/chef-repo $ knife cookbook upload greeting
Uploading greeting [0.1.0]
Step 5 - Esegui Chef-Client sul 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 - Convalida il contenuto del file generato.
[email protected]:~$ cat /tmp/greeting.txt
Ohai, Chef!
Script del flusso di lavoro
I LWRP vivono nei libri di cucina. Una risorsa personalizzata risiede all'interno dei ricettari e sarà disponibile sotto il nome del ricettario. Nel flusso di lavoro, prima definiamo le definizioni e poi passiamo gli attributi alle risorse che verranno utilizzate nel ricettario. Infine, usiamo quelle azioni e attributi nella nostra ricetta.