Sysadmin #3 - Atelier Chef

415efaa445ed983307231341eaa4be55?s=47 Renaud Chaput
August 27, 2014
4

Sysadmin #3 - Atelier Chef

415efaa445ed983307231341eaa4be55?s=128

Renaud Chaput

August 27, 2014
Tweet

Transcript

  1. Atelier Chef Renaud Chaput Nicolas Szalay Arthur Gautier 20/10/2011 Séminaire

    sysadmin #3 samedi 22 octobre 11
  2. Chef • Première version en 2009 • Ecrit en Ruby

    • Développé par OpsCode • Licence Apache samedi 22 octobre 11
  3. Idée • Gestion d’infrastructure • Automatique • Rigoureuse • Evolutive

    • Ouverte samedi 22 octobre 11
  4. 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
  5. Outils annexes • chef-solo : client chef indépendant • knife

    : CLI (modulaire) • shef : session chef interactive samedi 22 octobre 11
  6. Concepts de base • Client • Node • Cookbook •

    Environnement • Role • Runlist • Recipe • Attributs • Databag • Resource • Definition • Library samedi 22 octobre 11
  7. 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
  8. Node • Entité sur laquelle agit chef • Possède :

    • Des attributs • Une runlist • Appartient à un environnement samedi 22 octobre 11
  9. Cookbook • Encapsule toutes les ressources nécessaires pour développer •

    Versionné • Dépendances • Distribuable • Contient : Attributs, Recipes, Definitions, Templates, Fichiers, ... samedi 22 octobre 11
  10. Runlist • Liste ordonnées des cookbooks à appliquer à un

    noeud (ou un rôle) • Peut contenir des rôles samedi 22 octobre 11
  11. 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
  12. 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
  13. Ressource • Entité abstraite que vous manipulez sur un host

    : fichier, service, ... • Multiplateforme • Conditions • Notifications samedi 22 octobre 11
  14. Provider • Implémente une resource sur des plateformes spécifiques •

    Resource : package - Providers : dpkg, yum, ... samedi 22 octobre 11
  15. Installation de Chef • Debian : • Ajouter le repository

    • apt-get install chef • Poser la clé de validation samedi 22 octobre 11
  16. Premier recipe • But : modifier le /etc/motd • Créer

    un cookbook motd : • metadata.rb • recipes/default.rb samedi 22 octobre 11
  17. 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
  18. 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
  19. 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
  20. 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
  21. 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
  22. Search • Fonctionnalité clé • Permet de rechercher dans un

    recipe parmis les attributs de tous les autres noeuds • Recherche full-text samedi 22 octobre 11
  23. Exemple de recherches • platform:debian • name:svr?.local • network_interfaces_X_addresses:192.168* •

    recipes:apache samedi 22 octobre 11
  24. 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
  25. 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
  26. 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
  27. 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