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

Comment C3BS 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 missions s'effectuent 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.


Apres 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 à jours. C'est vrai que l'utilisation du cloud nous évite de traverser la ville (ou le pays) avec des datas sur clés USB ou de s'envoyer les mises à jours via des mails non sécurisés. 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.

Telechargement SDK Android

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é avec les procédures d'automatisation. Ainsi, la majeure partie des solutions d'intégration continue offre la possibilité d'automatiser le déploiement des solutions testées. En ce sens, Gitlab CE a ces fonctionnalités. Cependant, nous avons préféré nous tourner vers une autre solution pour cette tâche: ANSIBLE.

 Logo 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 de ses besoins.
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 inventaire 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 répertoire de modules Odoo ou Tryton sur les serveurs client à la mise en place des fichiers d'un site web ou à la compilation d'applications android sur nos serveurs de stockage.

 Ansible playbook

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.

 Inventaire Ansible avec Semaphore

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 à jours des cibles enregistrées dans les inventaires.

 Taches Ansible Semaphore

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

Log de taches Ansible Semaphore

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.
 

Imprimer E-mail