Chef - Rôles

Les rôles dans Chef sont une manière logique de regrouper les nœuds. Les cas typiques sont d'avoir des rôles pour les serveurs Web, les serveurs de base de données, etc. On peut définir une liste d'exécution personnalisée pour tous les nœuds et remplacer la valeur d'attribut dans les rôles.

Créer un rôle

[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 
   } 
}

Une fois le rôle créé, nous devons le télécharger sur le serveur Chef.

Télécharger le rôle sur Chef Server

[email protected]:~/chef-repo $ knife role from file web_servers.rb

Maintenant, nous devons attribuer un rôle à un nœud appelé serveur.

Attribuer un rôle à un nœud

[email protected]:~/chef-repo $ knife node edit server 
"run_list": [ 
   "role[web_servers]" 
] 
Saving updated run_list on node server

Exécutez le 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...

Comment ça fonctionne

  • Définissez un rôle dans un fichier Ruby dans le dossier des rôles du référentiel Chef.

  • Un rôle se compose d'un nom et d'un attribut de description.

  • Un rôle se compose d'une liste d'exécution spécifique au rôle et de paramètres d'attribut spécifiques au rôle.

  • Chaque nœud qui a un rôle dans sa liste d'exécution aura la liste d'exécution du rôle qui lui est propre.

  • Toutes les recettes de la liste d'exécution du rôle seront exécutées sur le nœud.

  • Le rôle sera téléchargé sur le serveur Chef à l'aide du rôle de couteau de la commande de fichier.

  • Le rôle sera ajouté à la liste d'exécution des nœuds.

  • L'exécution du client Chef sur un nœud ayant le rôle dans sa liste d'exécution exécutera toutes les recettes répertoriées dans le rôle.