Dernière mise à jour le .

Automatiser son infrastructure, c'est l'assurance d'une qualité augmentée et d'une sérénité accrue dans l'exploitation au quotidien

Introduction

Pour certains l'été est la période de calme, de vacances, voire de la fermeture annuelle de l'entreprise. Le moins qu'on puisse dire, c'est que ça n'aura pas été le cas pour algoo !

Chez algoo, ça n'a pas été particulièrement calme. Outre nos projets clients, nous n'avons pas chômé en R&D. Pyjobs se refait une santé (bientôt visible), Tracim se dote de calendriers partagés et de partages WebDAV, et notre infrastructure de monitoring basée sur shinken qui s'enrichit et s'industrialise...

C'est d'ailleurs par là que tout à commencé...

Déploiement automatisé ?

J'avais eu l'occasion par le passé de mettre en place et exploiter des infrastructures automatisées, ce qui était très efficace en terme de maintenance, et très bon en terme de qualité. Toutefois cela était rentable car nous avions des dizaines de serveurs similaires, sur lesquels les configurations déployées étaient identiques.

Je me posais la question de (re)mettre en place ce type d'outil avec une situation différente : nous exploitons des serveurs pour nos clients, chacun ayant des spécificités, donc peu de réutilisation/factorisation du déploiement.

En retravaillant sur le monitoring avec Hillian, l'idée est revenue sur le tapis et c'était l'occasion de remettre les choses à plat.

Pour nos projets clients, nous avons toujours un serveur de test qui est mis à jour via l'exécution d'une commande unique, ce qui simplifie la mise à jour et favorise les tests clients, donc remontées de bugs plus rapides (et leur résolution également).

L'idée est donc ici très simple : être capable de déployer en une seule commande, les configurations, fichiers et logiciels nécessaires sur l'ensemble des serveurs adéquats.

Ansible ?

Par le passé j'avais utilisé Puppet, un très bon outil, très souple et puissant, bien qu'un peu complexe à mettre en place.

Nous étions dans un contexte où la scalabilité horizontale était de mise pour pouvoir monter en charge. J'avais alors bien en tête la puissance de l'outil car l'ajout d'une ressource supplémentaire était fait en quelques minutes, puis déployée et opérationnelle en aussi peu de temps.

Différentes solutions existent pour opérer ce genre de processus, chacune avec ses avantages et ses inconvénients.

Chez Algoo nous aimons le python, aussi était-il naturel de choisir un système développé sur cette technologie. Il se trouve que c'est le cas d'Ansible, de plus Bastien avait déjà des connaissances sur le sujet, et son fonctionnement est similaire à celui de Puppet, ce qui n'était pas pour me déplaire.

Nous avons donc POC-é (fait un POC — Proof Of Concept — un prototype quoi;), et comme ce prototype a bien fonctionné, hé bien... nous continuons.

Monitoring - le galop d'essai.

Tout le monde ne le sait peut-être pas, mais le monitoring de serveurs est en général l'un des premiers services redondés. En effet, il n'y a rien de pire qu'un serveur censé remonter des alertes mais n'en remontant pas, faute de fonctionner correctement. On croit alors que tout va bien alors que c'est tout à fait l'inverse !

Notre chantier était de remettre à plat tout notre monitoring, ce que nous avons fait. Une fois l'opération réalisée, nous avons intégré l'ensemble des sondes et configurations du monitoring dans notre configuration Ansible... et après quelques tests et mises au point, quel plaisir de déployer un clone de notre serveur de monitoring en quelques minutes à peine !

Prochaine étape — les services de nos clients

Une fois la structure en place, rien ne peut nous arrêter ! Nous allons généraliser progressivement l'utilisation d'Ansible à l'ensemble de nos serveurs et serveurs clients.

Puisque nous avons déjà une stratégie de scripting pour les projets de nos clients (nous mettons à jour un serveur et toutes ses dépendances en une unique ligne de commande), il ne manque plus que le déploiement des fichiers de configuration à automatiser et c'est le jackpot !

Quels bénéfices concrets ?

Il ne faut pas se leurrer, ce travail prend du temps, en particulier pour la mise en place initiale. Mais si cela est coûteux au début, c'est un sérieux gain à moyen ou long terme :

  • qualité accrue puisque le déploiment est 100% reproductible et le risque d'erreur humaine chute drastiquement,
  • fiabilité améliorée car moins de tâches répétitives signifie moins de lassitude, donc plus de concentration et de meilleures opérations,
  • sécurité et sereinité, car en cas de panne matérielle, un serveur peut être remplacé en quelques minutes seulement !

Conclusion

Un outil qui rend notre travail plus agréable et améliore la qualité de service pour nos clients... nous aurions tord de nous en priver !

Poursuivre la lecture (pour un public technique) :