Pilotez votre infrastructure depuis votre smartphone

L’administration système est un domaine vaste incluant des tâches cruciales pour la maintenance d’une infrastructure :

- la configuration de machines ;
- la gestion des logs ;
- le *monitoring* de performances ;
- le déploiement d’applications.

Toutes ces tâches sont indépendantes et il existe aujourd’hui beaucoup d’outils pour les accomplir efficacement. Néanmoins il peut s’avérer complexe de travailler avec un tel nombre d’outils et d’en extraire les informations nécessaires à la maintenance d’une infrastructure.

Dans cet article, je proposerai une manière d’agréger efficacement cette masse d’informations ; puis je présenterai le Chatops, une solution développée et utilisée chez Dernier Cri permettant de gérer efficacement son infrastructure depuis un chat, ce qui permet d’effectuer facilement ces tâches depuis un simple smartphone et donc de gagner grandement en réactivité.

Le cœur de l’infrastructure : le chat

La communication étant très importante au sein des entreprises, celles-ci se doivent de disposer d’un outil de communication performant. Les systèmes de chat répondant parfaitement à ce besoin, des services comme Slack ou HipChat, sont très vite devenus incontournables.

Ces services proposent un vaste panel d’intégrations permettant de collecter des données provenant de différents services. L’utilisation de ces intégrations centralisera les données issues de différents outils en un même endroit.

Une bonne pratique consiste à configurer un channel correspondant à chacune des applications gérées par l’entreprise. Ce channel regroupera à la fois les différents acteurs du projet (chef de projet, développeurs, clients) et l’ensemble des intégrations connectées à l’application en question. De cette manière en cas de panne, toutes les informations nécessaires à sa résolution seront disponibles au même endroit :

  • les logs d’erreur ;- l’état de la machine ;- les rapports d’analyse de code (ex : Code Climate) ;- l’état de l’intégration continue.

Cette méthode permet également à davantage de personnes de participer à la résolution d’une panne puisqu’il n’y a aucun pré-requis technique à la collecte d’informations. De cette manière, le chef de projet et le client sont plus à même de suivre les étapes de résolution du problème.

Il faut maintenant être capable d’utiliser cette masse d’informations, pour cela je vais vous présenter un outil très pratique qui permettra même à un chef de projet stressé de participer à la résolution d’une panne.

Le chatops

Ayant accès à une collection d’informations utiles, il est maintenant intéressant de disposer d’un outil capable de les manipuler et d’automatiser certaines tâches d’administration système.

Nous avons créé Yolops, un bot Slack, pour répondre à ce besoin. Il est maintenant possible de réaliser une partie de la maintenance de serveurs directement via le channel associé. Il n’est plus nécessaire de disposer de compétences techniques pour gérer une panne. Une commande simple et intuitive suffira à interagir avec le bot.

Yolops est capable, entre autres, de :
- redémarrer des serveurs ;
- manipuler des dynos heroku ;
- surveiller des machines ;
- déployer…

Le Chatops permet de faire du Développement dirigé par la conversation, il aidera étape par étape à la réalisation des tâches d’administration système.

Botkit et NodeJS comme base pour construire notre chatops

Le Chatops est une application Node.JS connectée à l’API temps réel de Slack afin d’être notifié de l’activité des channels desquels il fait partie. Cette application est basée sur le module Botkit permettant de créer facilement un bot Slack et auquel nous avons ajouté une couche d’abstraction pour rendre le Chatops plus extensible.

En effet, nous avons souhaité rendre le code aussi modulaire que possible, de manière à pouvoir l’utiliser et l’étendre très simplement. Les fonctionnalités de Yolops sont implémentées au sein de différents plugins spécialisés permettant au bot de s’adapter à l’évolution de notre infrastructure.

Voici un exemple montrant la construction d’une commande du Chatops :

La construction est très simple :
- `sampleCommand` et `shortDescription` sont utilisés pour décrire la commande dans l’aide du *Chatops*
- `hears` correspond à une expression régulière reconnue par le *bot* comme évènement déclencheur de la commande
- `command` correspond à la fonction à exécuter au déclenchement de celle-ci.

Ansible comme orchestrateur pour nos serveurs

Pour accroitre la puissance du Chatops, nous avons décidé de le coupler à Ansible, un logiciel d’orchestration Open-Source permettant de gérer et d’organiser efficacement un ensemble de machines.

Les tâches exécutées par Ansible se présentent sous la forme de playbooks. Il s’agit de fichiers YAML permettant de chainer plusieurs appels à des modules Ansible pour réaliser des tâches plus complexes.

Par exemple, le script suivant peut être utilisé pour supprimer une clé SSH spécifique de toutes les machines auxquelles Ansible a accès. Pour ce faire le script va simplement lire la clé publique à supprimer et vérifier qu’elle est bien absente du fichier ~/.ssh/authorized_keys du serveur.

Ansible s’intègre parfaitement au Chatops pour 2 raisons :
- il s’agit d’un client léger donc facilement empaquetable avec le *bot*
- il apporte une solide bibliothèque de [modules] adaptés à un grand nombre d’outils et technologies

Ainsi, l’exécution des tâches d’administration est déléguée à Ansible tandis que le Chatops interface celles-ci au sein de commandes plus accessibles à l’utilisateur.
Ce découpage permet également de garnir l’exécution des playbooks d’appels à diverses API pour fournir davantage d’informations.

Chatops : un outil devops simple et aux possibilités infinies

Que vous soyez développeur, administrateur système ou chef de projet, la centralisation des informations de votre infrastructure représente un gain de temps non négligeable. Cette méthode facilite également la gestion des équipes, chaque projet disposera d’un channel dédié au sein duquel seront présents les différents acteurs de ce projet.

L’intégration d’un Chatops est très intuitive et vise à être la plus extensible possible via de nouveaux plugins adaptés à vos technologies. Ceux-ci pourront être associés à une solution d’orchestration telle qu’Ansible pour entretenir votre infrastructure de manière uniforme, qu’elle repose sur une ou plusieurs plateformes.

Sur le long terme, vous pourriez également créer des plugins permettant au Chatops d’être autonome. Par exemple en le connectant à votre outil de monitoring, le bot pourrait automatiquement diagnostiquer une panne dès qu’elle survient, fournir un rapport sur Slack et tenter de résoudre le problème.

Liens utiles

Jean-Serge Monbailly

Jean-Serge Monbailly

Lire d'autres articles par cet auteur.

Lille