Déployer une application sur un serveur Linux manuellement, c'est une opération répétable mais jamais identique : chaque technicien a ses habitudes, chaque installation son lot de variations. Nous avons mis en place Ansible pour standardiser et automatiser ces déploiements, en développant des rôles réutilisables qui évitent la duplication de code et garantissent la cohérence d'un déploiement à l'autre.
Qu'est-ce que Ansible ?
Ansible est un outil open source d'automatisation informatique et d'infrastructure as code. Il permet de configurer des serveurs, déployer des applications et orchestrer des tâches via des playbooks déclaratifs, sans agent à installer.
Déployer des applications Linux sans duplication de code
Chaque application déployée sur un serveur Linux partage des étapes communes : installation de dépendances, création des répertoires, configuration du service, gestion du pare-feu, mise en place de la supervision. Sans structure, ces étapes sont réécrites dans chaque playbook, créant de la duplication et des risques de divergence.
Nous avons développé des rôles Ansible (rôles et collections) qui encapsulent ces étapes communes. Chaque déploiement d'application appelle ces rôles plutôt que de réécrire la logique. Concrètement :
- install-base : configuration socle du serveur (sécurisation, paquets de base, paramètres système).
- install-docker : installation et configuration de Docker, prêt à héberger les conteneurs applicatifs.
- install-mariadb : déploiement et configuration d'une base de données MariaDB.
- install-mysql : déploiement et configuration d'une base de données MySQL.
- install-pgsql : déploiement et configuration d'une base de données PostgreSQL.
Chaque déploiement d'application appelle les rôles dont il a besoin. Un serveur qui doit héberger une application sous Docker avec une base MariaDB appelle install-base, puis install-docker, puis install-mariadb - dans le bon ordre, avec la bonne configuration, sans réécrire la logique d'installation.
Un bug corrigé dans un rôle Ansible est corrigé pour toutes les applications qui l'utilisent. Sans rôles, le même bug existerait en autant d'endroits que de playbooks.
Ce que cela change pour les déploiements
Cette approche modulaire transforme le déploiement d'une nouvelle application en une opération standardisée :
- Rapidité : un nouveau déploiement ne repart pas de zéro. Les rôles existants couvrent la majorité de la configuration.
- Cohérence : tous les serveurs sont configurés de la même façon, selon les mêmes standards, sans variation liée à l'opérateur.
- Maintenabilité : une évolution de la stack (nouveau standard de configuration, changement de politique de sauvegarde) se répercute sur tous les déploiements en modifiant le rôle, pas chaque playbook individuellement.
- Documentation vivante : les playbooks Ansible décrivent exactement ce qui est installé et comment - c'est une documentation toujours à jour de l'infrastructure.
Notre déploiement
Ansible est utilisé pour l'ensemble des déploiements sur les serveurs Linux du parc. Chaque application de la stack - Keycloak, Nextcloud, Zabbix, Guacamole, phpIPAM et les autres - est déployée via un playbook Ansible qui appelle les rôles communs. Les mises à jour sont également gérées par Ansible, nœud par nœud pour les clusters, garantissant une mise à jour sans interruption de service. Ansible Semaphore fournit l'interface web pour déclencher et suivre les déploiements.
Intégration au système d'information
Ansible est le socle d'automatisation de l'ensemble de la stack : il déploie, configure et met à jour toutes les applications. Les rôles développés couvrent l'intégration NGINX, Let's Encrypt, Uptime Kuma et la gestion des sauvegardes. Ansible Semaphore, accessible via Keycloak, permet aux équipes de déclencher des déploiements depuis une interface web sans passer par la ligne de commande.
Bénéfices concrets
- Déploiements standardisés : chaque application est installée de la même façon, selon les mêmes standards.
- Zéro duplication de code : les rôles communs sont écrits une fois, réutilisés partout.
- Maintenabilité : une évolution s'applique à tous les déploiements en modifiant un seul rôle.
- Infrastructure as code : l'état de chaque serveur est décrit dans des fichiers versionnés et auditables.
- Mises à jour sans interruption : les clusters sont mis à jour nœud par nœud, sans coupure de service.
- Solution open source sans licence, intégrée à Ansible Semaphore pour une utilisation sans ligne de commande.
Ansible s'inscrit dans notre approche d'un système d'information hospitalier open source, souverain et maîtrisé, où chaque brique est déployée et documentée pour rester exploitable en autonomie par les équipes.
Un projet de déploiement open source ?
Nous déployons et intégrons des solutions open source souveraines pour les établissements de santé.
Demander un diagnostic de 30 min →