Process de Mise à jour avec la livraison continue

Comment Spconsulting a optimisé son processus de mise à jour avec la livraison continue?

Afin de faciliter l’exécution de nos opérations, une grande partie de nos clients travaillent sur une infrastructure On Premise et certains en Cloud sur des plateformes dédiées. L’avantage pour les utilisateurs est de pouvoir se connecter afin de voir l’évolution du projet, de commencer à le tester voir même l’utiliser. Pour les techniciens, la tenue du système est plus simple et exige moins de déplacements. En fin de projet, la version finalisée peut être déployée définitivement selon les besoins et les contraintes du demandeur sur les plateformes qu’il souhaite.

Après avoir effectué les développements et les tests de validation des fonctionnalités demandées, la problématique qui se lève est l’implémentation de ces mises à jour. Cependant, exécuter chaque fois un certain nombre de commandes pour compiler, copier, déplacer, redémarrer les services ou autres tâches de mise à jour peut devenir chronophage quand le volume de mises à jour et de serveurs cibles augmente.

Dans cette mesure, il est devenu intéressant de mettre en place une procédure de mise à jour automatisée afin de réduire la tâche à une simple formalité.
Après avoir optimisé en amont les processus de production de solution et les tests d’intégration, nous étions assez familiarisés avec les procédures d’automatisation. Ainsi, la majeure partie des solutions d’intégrations continue offre la possibilité d’automatiser le déploiement des solutions testées. En ce sens, Gitlab dispose de ces fonctionnalités. Cependant, nous avons préféré nous tourner vers une autre solution pour cette tâche: ANSIBLE.

Ansible est une solution de gestion de parc de serveurs, de configuration et de déploiement d’applications à distance. Sa première particularité est qu’elle fonctionne sans agent. Pour le faire intervenir sur une machine distante, vous  n’aurez pas besoin d’y déployer une application ou un client. Il se connecte à sa cible via le protocole SSH (Secure SHell) pour effectuer ses actions. Simple à paramétrer et à manipuler, il embarque une série de modules écrits en python. Ces modules lui permettent d’effectuer plusieurs actions telles que l’utilisation d’applications de compilation, de téléchargement ou autres, la manipulation des services ou des fichiers d’un serveur, le changement d’utilisateurs, la mise en place d’actions conditionnelles, etc… La liste est loin d’être exhaustive car il est aussi possible de créer ces propres modules Ansible en fonction des besoins de nos clients.


Cette solution est utilisable à la base en mode ligne de commande, mais il est possible de lui associer une interface graphique full web avec Ansible Tower/AWX ou Semaphore.
Pour utiliser Ansible, il faut d’une part, définir les scripts YAML (Playbooks) qui décriront les différentes tâches à effectuer lors de la procédure de déploiement et d’autre part, mettre en place des inventaires qui sont les adresses des serveurs cible de mise à jour.
Dans cette mesure, nous avons conçu de nombreux scripts qui partent de la mise à jour de sécurité sur les serveurs clients à la mise en place des fichiers d’un site web ou à la création de Machines virtuelles sur notre infrastructure.

En outre, les inventaires sont un listing des serveurs individuels ou organisés par groupe afin de pouvoir faciliter les mises à jour collectives ou limiter les accès des utilisateurs.

L’interface utilisateur permet d’avoir accès à l’ensemble des playbooks de Ansible utilisés afin d’effectuer les actions de maintenance ou de mise à jour des cibles enregistrées dans les inventaires.

Lors de l’exécution des tâches, chaque utilisateur a accès aux différents logs d’exécutions des opérations qu’il a lancé.

L’utilisation de Ansible nous a permis d’améliorer la vitesse d’exécution de nos opérations. Cela représente un gain de temps et de réactivité non négligeable. En outre, les taches de mise à jour ont pu facilement être déléguées vu leur simplicité. Nous avons aussi réduit les risques d’erreurs en supprimant l’intervention humaine du processus.