Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Sysadmin #3 - Atelier Chef

Renaud Chaput
August 27, 2014
16

Sysadmin #3 - Atelier Chef

Renaud Chaput

August 27, 2014
Tweet

Transcript

  1. Chef • Première version en 2009 • Ecrit en Ruby

    • Développé par OpsCode • Licence Apache samedi 22 octobre 11
  2. Outils annexes • chef-solo : client chef indépendant • knife

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

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

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

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

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

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

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

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

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

    recipe parmis les attributs de tous les autres noeuds • Recherche full-text samedi 22 octobre 11
  20. 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
  21. 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
  22. 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
  23. 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