$30 off During Our Annual Pro Sale. View Details »

Sysadmin #3 - Atelier Chef

Renaud Chaput
August 27, 2014
14

Sysadmin #3 - Atelier Chef

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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  5. Outils annexes
    • chef-solo : client chef indépendant
    • knife : CLI (modulaire)
    • shef : session chef interactive
    samedi 22 octobre 11

    View Slide

  6. Concepts de base
    • Client
    • Node
    • Cookbook
    • Environnement
    • Role
    • Runlist
    • Recipe
    • Attributs
    • Databag
    • Resource
    • Definition
    • Library
    samedi 22 octobre 11

    View Slide

  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

    View Slide

  8. Node
    • Entité sur laquelle agit chef
    • Possède :
    • Des attributs
    • Une runlist
    • Appartient à un environnement
    samedi 22 octobre 11

    View Slide

  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

    View Slide

  10. Runlist
    • Liste ordonnées des cookbooks à appliquer
    à un noeud (ou un rôle)
    • Peut contenir des rôles
    samedi 22 octobre 11

    View Slide

  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

    View Slide

  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

    View Slide

  13. Ressource
    • Entité abstraite que vous manipulez sur un
    host : fichier, service, ...
    • Multiplateforme
    • Conditions
    • Notifications
    samedi 22 octobre 11

    View Slide

  14. Provider
    • Implémente une resource sur des
    plateformes spécifiques
    • Resource : package - Providers : dpkg,
    yum, ...
    samedi 22 octobre 11

    View Slide

  15. Installation de Chef
    • Debian :
    • Ajouter le repository
    • apt-get install chef
    • Poser la clé de validation
    samedi 22 octobre 11

    View Slide

  16. Premier recipe
    • But : modifier le /etc/motd
    • Créer un cookbook motd :
    • metadata.rb
    • recipes/default.rb
    samedi 22 octobre 11

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  23. Exemple de recherches
    • platform:debian
    • name:svr?.local
    • network_interfaces_X_addresses:192.168*
    • recipes:apache
    samedi 22 octobre 11

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide