Chef - Ruoli
I ruoli in Chef sono un modo logico di raggruppare i nodi. I casi tipici prevedono ruoli per server Web, server di database e così via. È possibile impostare elenchi di esecuzione personalizzati per tutti i nodi e sovrascrivere il valore dell'attributo all'interno dei ruoli.
Crea un ruolo
[email protected]:~/chef-repo $ subl roles/web_servers.rb
name "web_servers"
description "This role contains nodes, which act as web servers"
run_list "recipe[ntp]"
default_attributes 'ntp' => {
'ntpdate' => {
'disable' => true
}
}
Una volta creato il ruolo, dobbiamo caricarlo sul server Chef.
Carica ruolo su Chef Server
[email protected]:~/chef-repo $ knife role from file web_servers.rb
Ora, dobbiamo assegnare un ruolo a un nodo chiamato server.
Assegna un ruolo a Node
[email protected]:~/chef-repo $ knife node edit server
"run_list": [
"role[web_servers]"
]
Saving updated run_list on node server
Esegui lo Chef-Client
[email protected]:~$ sudo chef-client
...TRUNCATED OUTPUT...
[2013-07-25T13:28:24+00:00] INFO: Run List is [role[web_servers]]
[2013-07-25T13:28:24+00:00] INFO: Run List expands to [ntp]
...TRUNCATED OUTPUT...
Come funziona
Definisci un ruolo in un file Ruby all'interno della cartella dei ruoli del repository Chef.
Un ruolo è costituito da un nome e da un attributo di descrizione.
Un ruolo è costituito da un elenco di esecuzione specifico del ruolo e dalle impostazioni degli attributi specifici del ruolo.
Ogni nodo che ha un ruolo nel proprio elenco di esecuzione avrà l'elenco di esecuzione del ruolo imposto nel proprio.
Tutte le ricette nell'elenco di esecuzione del ruolo verranno eseguite sul nodo.
Il ruolo verrà caricato sul server Chef utilizzando il comando knife role from file.
Il ruolo verrà aggiunto all'elenco di esecuzione dei nodi.
L'esecuzione del client Chef su un nodo che ha il ruolo nella sua run list eseguirà tutte le ricette elencate nel ruolo.