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.