Slide 1

Slide 1 text

Atelier Chef Renaud Chaput Nicolas Szalay Arthur Gautier 20/10/2011 Séminaire sysadmin #3 samedi 22 octobre 11

Slide 2

Slide 2 text

Chef • Première version en 2009 • Ecrit en Ruby • Développé par OpsCode • Licence Apache samedi 22 octobre 11

Slide 3

Slide 3 text

Idée • Gestion d’infrastructure • Automatique • Rigoureuse • Evolutive • Ouverte samedi 22 octobre 11

Slide 4

Slide 4 text

Architecture chef-server-api SolR CouchDB RabbitMQ chef-expander chef-client chef-client chef-client chef-client chef-server-webui knife samedi 22 octobre 11

Slide 5

Slide 5 text

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