Chef - Modelli
Infrastruttura, configuration managementè tutto su come si configurano bene gli host. In generale, tutte le configurazioni vengono eseguite utilizzando i file di configurazione. Chef utilizza modelli per poter riempire il file di configurazione con valori dinamici.
Chef fornisce modelli come risorsa che può essere utilizzata nella ricetta. I valori dinamici dei file di configurazione possono essere recuperati da sacchi di dati, attributi o persino calcolarli passandoli nel modello.
Come usarlo?
Step 1 - Aggiungi il modello alla ricetta.
vipin@laptop:~/chef-repo $ subl cookbooks/<Cookbook Name>/recipes/default.rb
template '/tmp/message' do
source 'Test.erb'
variables(
hi: 'Tesing',
world: 'Welt',
from: node['fqdn']
)
end
Step 2 - Aggiungi ERB File modello.
vipin@laptop:~/chef-repo $ subl cookbooks/<Cookbook Name>/templates/default/test.erb
<%- 4.times do %>
<%= @hi %>, <%= @world %> from <%= @from %>!
<%- end %>
Step 3 - Carica il ricettario modificato sul server Chef.
vipin@laptop:~/chef-repo $ knife cookbook upload <Cookbook Name>
Uploading my_cookbook [0.1.0]
Run Chef Client on your node:
user@server:~$ sudo chef-client
...TRUNCATED OUTPUT...
[2017-01-14T20:41:21+00:00] INFO: Processing template[/tmp/
message] action create (my_cookbook::default line 9)
[2017-01-14T20:41:22+00:00] INFO: template[/tmp/message] updated
content
Step 4 - Convalida il contenuto del file caricato.
user@server:~$ sudo cat /tmp/message
Hallo, Welt from vagrant.vm!
Hallo, Welt from vagrant.vm!
Hallo, Welt from vagrant.vm!
Hallo, Welt from vagrant.vm!
Flusso di lavoro
Lo chef utilizza Erubis come linguaggio del modello. Permette di incorporare il codice Ruby puro all'interno di simboli speciali nei template.
<% =%> viene utilizzato se si desidera stampare il valore di una variabile o di un'espressione Ruby nel file generato.
<% -%> viene utilizzato se desideri incorporare la logica Ruby nel tuo file modello. Lo usiamo per ripetere la nostra espressione quattro volte.