Pourquoi j’aime Puppet

Bonjour les gens,

Je vais expliquer rapidement pourquoi j’aime Puppet et pourquoi mes collègues commencent aussi à l’aimer. L’explication est probablement applicable à des outils similaires comme Chef, CFEngine, Ansible, Salt, …

Puppet est un outil créé pour les administrateurs système, fainéants par définition, puisqu’il permet de faire bosser d’autres (du règne animal ou non) qu’eux, ici en l’occurrence les fameux systèmes qu’ils doivent administrer.

Certes, il faut être motivé au départ pour apprendre l’outil et le mettre en place, mais une fois que c’est fait, on peut ensuite s’adonner à ses occupations préférées (j’entends par là éviter les tâches ingrates).

Un exemple réel : au boulot, je participe à l’administration d’un DataCenter qui contient tout un tas de machines, proche des 400 tout compris : Windows Server 2003, 2008 (bientôt 2012) physiques et/ou virtuels, Solaris physiques et zones, AIX physiques et LPAR, RedHat physiques et virtuels, des VMware ESX en quantité et quelques “trucs” comme un SAN HP ou un NAS NetApp. Il y a plusieurs domaines Windows AD, des Windows pas AD, des Unix standalones ou avec authentification auprès de l’AD ou de NIS, …

Ajouter un compte (ou une application) sur l’ensemble des serveurs, par exemple, peut vite devenir un enfer; de quoi pousser un sysadmin au suicide.

Avec Puppet (ou apparenté), on définit une règle pour décrire le compte qu’on veut créer, on inclut la règle dans le modèle des machines (ou à défaut dans la définition des machines spécifiquement concernées) gérées par Puppet, on attend quelques minutes (30 mn par défaut), et paf le compte est créé et utilisable. Vous avez besoin de créer une entrée dans le CRON, même principe.

Un autre exemple concret : dès que l’agent Puppet est installé sur une machine Unix, cela déclenche automatiquement l’installation de NRPE (un composant de Nagios qui remplace SNMP, qui s’avère plutôt instable sur certains Unix utilisés dans le DataCenter, et permet l’usage d’un seul et unique protocole pour surveiller les serveurs Unix). On peut généraliser ce comportement à quasiment toute installation logicielle (c’est un peu plus compliqué sous Windows, car il est souvent nécessaire de redémarrer après une installation, mais pour être honnête, j’attaque juste l’approche Puppet avec Windows, j’ai probablement encore pas mal de subtilités à comprendre dans ce contexte).

Imaginons maintenant un petit script permettant de synchroniser Puppet et Centreon, l’outil de monitoring utilisé pour surveiller le DataCenter, et on peut aller naviguer sereinement sur le Web à la recherche d’une chaise longue :-)

Le script en question, petit (1200 lignes en PHP) interroge Puppet (pour être précis, PuppetDB) grâce à une API REST, communique avec Centreon en utilisant la CLAPI et fait en sorte d’ajouter les machines présentes dans Puppet et pas dans Centreon. Il ne reste plus qu’à personnaliser les quelques paramètres que Puppet n’expose pas pour l’instant et c’est fini. J’espère dans un avenir proche ajouter le code qui va bien dans Puppet pour remonter les facts manquants pour aller au bout de la démarche (par exemple il n’y a pas les partitions locales dans les facts de Puppet actuellement; du code existe, mais ne concerne que Linux, il me faut aussi du Solaris, et de l’AIX, donc je vais l’écrire).

Ce script, en évolution régulière depuis sa création, va également gérer dans un avenir plus ou moins proche :

  • la synchronisation avec iTop, en créant la encore les machines manquantes
  • si une machine ne remonte pas de status à Puppet au bout d’un moins, on désactive le monitoring et on change le status en désactivé dans iTop
  • si une machine ne remonte pas de status à Puppet au bout de 3 mois, on supprime du monitoring

Au final, cela va libérer les administrateurs d’une partie de la gestion “administrative” fastidieuse du DataCenter. Et tout cela c’est grâce à Puppet.

Certains me diront : “oui mais non, le script de synchronisation c’est pas Puppet.” Et je répondrai “bah si, Puppet me fournit la source de données et me libère du temps pour justement pouvoir travailler sur un tel script”.

Donc j’aime Puppet pour sa capacité à me défaire des tâches fastidieuses mais nécessaires, mais aussi (effet de bord heureux) pour sa capacité à me permettre de faire un peu de développement dans mon univers d’administrateur système, qui me permet d’entretenir ma double casquette ;-)

This entry was posted in Développement, Entreprise, Général, Technologie and tagged . Bookmark the permalink.

2 Responses to Pourquoi j’aime Puppet

  1. rokdun says:

    Super intéressant ! Merci ctacat !

  2. zecougar says:

    Ca, ça m’intéresse beaucoup !!!

    Je travaille justement sur la mise en place de Centreon donc du coup je vais regarder de plus prêt ton Puppet ;)

Laisser un commentaire