Outils annexes
• chef-solo : client chef indépendant
• knife : CLI (modulaire)
• shef : session chef interactive
samedi 22 octobre 11
Slide 6
Slide 6 text
Concepts de base
• Client
• Node
• Cookbook
• Environnement
• Role
• Runlist
• Recipe
• Attributs
• Databag
• Resource
• Definition
• Library
samedi 22 octobre 11
Slide 7
Slide 7 text
Client
• Entité servant uniquement pour
l’authentification
• Identifié par son nom
• Clé publique stockée sur le serveur
• Clé privée à conserver sur le client
• Peut être un node (serveur), un
administrateur (via knife), ...
samedi 22 octobre 11
Slide 8
Slide 8 text
Node
• Entité sur laquelle agit chef
• Possède :
• Des attributs
• Une runlist
• Appartient à un environnement
samedi 22 octobre 11
Slide 9
Slide 9 text
Cookbook
• Encapsule toutes les ressources nécessaires
pour développer
• Versionné
• Dépendances
• Distribuable
• Contient : Attributs, Recipes, Definitions,
Templates, Fichiers, ...
samedi 22 octobre 11
Slide 10
Slide 10 text
Runlist
• Liste ordonnées des cookbooks à appliquer
à un noeud (ou un rôle)
• Peut contenir des rôles
samedi 22 octobre 11
Slide 11
Slide 11 text
Attributs
• Automatiques : depuis ohai (FQDN, IP, ...)
• Depuis un recipe : paramètre pouvant
changer selon le node
• Manuels : forcés pour un node à une valeur
précise
samedi 22 octobre 11
Slide 12
Slide 12 text
Recipe
• «Recette» décrivant ce que vous souhaitez
accomplir sur le noeud
• DSL en Ruby
• Il peut y en avoir plusieurs par cookbook :
Chef::Client et Chef::Server
samedi 22 octobre 11
Slide 13
Slide 13 text
Ressource
• Entité abstraite que vous manipulez sur un
host : fichier, service, ...
• Multiplateforme
• Conditions
• Notifications
samedi 22 octobre 11
Slide 14
Slide 14 text
Provider
• Implémente une resource sur des
plateformes spécifiques
• Resource : package - Providers : dpkg,
yum, ...
samedi 22 octobre 11
Slide 15
Slide 15 text
Installation de Chef
• Debian :
• Ajouter le repository
• apt-get install chef
• Poser la clé de validation
samedi 22 octobre 11
Slide 16
Slide 16 text
Premier recipe
• But : modifier le /etc/motd
• Créer un cookbook motd :
• metadata.rb
• recipes/default.rb
samedi 22 octobre 11
Slide 17
Slide 17 text
Upload du recipe
• knife cookbook upload -o . motd
• Ajouter le cookbook dans la runlist du
noeud via la WebUI ou knife
• Lancer chef-client sur le noeud
samedi 22 octobre 11
Slide 18
Slide 18 text
Role
• Possède
• une run-list
• des attributs
• Permet d’assigner des attributs et des
recipes (ou d’autres roles) à des noeuds
similaires
samedi 22 octobre 11
Slide 19
Slide 19 text
DataBag
• Hashs stockés sur le serveur Chef, et
accessibles depuis les noeuds
• Servent à stocker des informations utilisées
dans les cookbooks, mais dépendant de
l’infrastructure et non d’un noeud précis
• Liste d’utilisateurs, liste des datacenters, ...
samedi 22 octobre 11
Slide 20
Slide 20 text
Environnement
• Un noeud appartient à un environnement
• Restrictions de versions par environnement
• Attributs spécifiques
• Permet de gérer, par exemple, un
environnement de tests (qui n’a pas de
restriction de version), et de production
(les versions sont spécifiées)
samedi 22 octobre 11
Slide 21
Slide 21 text
Recipe Apache
• Installer le serveur apache (resource
package)
• Configurer un VirtualHost (resource
template ou cookbook_file)
• Service apache, notifié en cas de
changement de configuration
samedi 22 octobre 11
Slide 22
Slide 22 text
Search
• Fonctionnalité clé
• Permet de rechercher dans un recipe
parmis les attributs de tous les autres
noeuds
• Recherche full-text
samedi 22 octobre 11
Slide 23
Slide 23 text
Exemple de recherches
• platform:debian
• name:svr?.local
• network_interfaces_X_addresses:192.168*
• recipes:apache
samedi 22 octobre 11
Slide 24
Slide 24 text
Recipe HAProxy
• Installer le paquet
• Créer les users correspondants
• Configurer HAProxy en utilisant une
recherche pour récupérer la liste des
serveurs webs
samedi 22 octobre 11
Slide 25
Slide 25 text
Definition
• Agit comme une resource
• Permet de combiner plusieurs resources en
une seule instruction
• Exemple : definition nfs_mount, qui crée le
point de montage (resource directory) et
monte le FS distant (resource mount)
samedi 22 octobre 11
Slide 26
Slide 26 text
Library
• Ensemble de méthodes Ruby appelables
dans les cookbooks
• Permet d’étendre le DSL facilement
• Exemple: appels à une source de données
externe (SQL, LDAP, ...), méthodes helper
(choix d’une IP «principale» pour une
machine qui en possède plusieurs, ...)
samedi 22 octobre 11
Slide 27
Slide 27 text
Lightweight Resources
and Providers
• Permet de définir simplement une
resource, et les providers associés
• Exemple : resource sql_database, providers
mysql_database et postgresql_database
• Ne requiert pas de «hack»
samedi 22 octobre 11