Dans le cadre de nos missions d'intégration et de modernisation du système d'information hospitalier, nous avons déployé Ansible Semaphore. Cette page présente l'outil, son usage et le contexte de sa mise en œuvre.
Qu'est-ce que Ansible Semaphore ?
Semaphore est une interface web open source pour Ansible. Elle permet de lancer et planifier des playbooks, de gérer les accès et de suivre l'historique des exécutions depuis une interface graphique, sans passer par la ligne de commande.
Ansible sans ligne de commande
Sans Ansible Semaphore, lancer un playbook Ansible nécessite de se connecter en SSH au serveur de contrôle, de naviguer dans les répertoires, de saisir la bonne commande avec les bons paramètres. C'est une barrière technique qui limite l'usage d'Ansible aux seuls profils ayant l'habitude du terminal.
Ansible Semaphore supprime cette barrière : toutes les opérations se font depuis une interface web accessible depuis n'importe quel navigateur. Lancer un playbook devient aussi simple que cliquer sur un bouton.
Ansible Semaphore ne simplifie pas Ansible - il le rend accessible. Toute la puissance d'Ansible, sans avoir besoin d'ouvrir un terminal.
Tout le paramétrage d'Ansible dans une interface web
Ansible Semaphore prend en compte l'intégralité du paramétrage d'Ansible. Chaque concept Ansible a son équivalent dans l'interface :
- Inventaires : les hôtes et groupes de machines cibles sont définis et gérés depuis l'interface.
- Dépôts : les playbooks sont liés à un dépôt Git (GitLab). Semaphore récupère automatiquement les dernières versions.
- Variables et secrets : les variables Ansible (mots de passe, clés, configurations sensibles) sont stockées de façon sécurisée dans Semaphore et injectées au moment de l'exécution.
- Templates de tâches : chaque playbook est configuré comme un template réutilisable, avec ses paramètres, son inventaire et ses variables associés.
- Planification : les tâches peuvent être planifiées pour s'exécuter automatiquement à une heure ou une fréquence définies.
- Historique et logs : chaque exécution est enregistrée avec son log complet, sa durée et son statut - on sait exactement ce qui a été exécuté, quand et avec quel résultat.
- Gestion des droits : les utilisateurs sont assignés à des projets avec des niveaux d'accès différents - certains peuvent uniquement consulter, d'autres lancer des tâches, d'autres administrer.
Déploiement conteneurisé, authentification centralisée et mises à jour maîtrisées
Cette application est déployée en conteneur Docker, orchestré et provisionné via Ansible. Cette approche garantit un déploiement reproductible, documenté et homogène d'un environnement à l'autre : la configuration est décrite sous forme de code, ce qui élimine les installations manuelles et fiabilise chaque mise en service.
Nous assurons les mises à jour de manière transparente pour les utilisateurs : les montées de version sont préparées, testées et appliquées de façon contrôlée, sans interruption perceptible du service. L'établissement bénéficie ainsi d'une application toujours à jour et sécurisée, sans avoir à gérer lui-même la complexité technique des mises à jour.
L'accès à cette application repose sur une authentification centralisée par OIDC avec Keycloak. Comme l'ensemble des applications que nous déployons, elle s'appuie sur un fournisseur d'identité unique : les utilisateurs se connectent avec les mêmes identifiants sur tout le parc applicatif, la gestion des accès est mutualisée et les règles de sécurité (mot de passe, second facteur, révocation) sont appliquées de façon homogène. Ce socle d'authentification unifié simplifie l'expérience utilisateur et renforce la maîtrise des accès à l'échelle du système d'information.
Notre déploiement
Ansible Semaphore est déployé en conteneur Docker, exposé via NGINX avec certificat Let's Encrypt, et authentifié via Keycloak. Les playbooks sont stockés dans GitLab et synchronisés automatiquement dans Semaphore. Les variables sensibles (mots de passe, clés SSH) sont stockées dans le coffre-fort de Semaphore et ne sont jamais exposées dans les logs ou l'interface.
Intégration au système d'information
Ansible Semaphore est le point d'entrée opérationnel pour tous les déploiements Ansible. Il est connecté à GitLab pour la gestion des playbooks, à Keycloak pour l'authentification centralisée, et supervisé par Uptime Kuma. Les rôles Ansible développés (install-base, install-docker, install-mariadb, install-mysql, install-pgsql) sont tous accessibles et exécutables depuis Semaphore.
Bénéfices concrets
- Ansible accessible sans terminal : n'importe qui peut lancer un playbook depuis un navigateur.
- Paramétrage complet : inventaires, variables, secrets, planification - tout est géré depuis l'interface.
- Traçabilité complète : historique de chaque exécution avec logs, durée et statut.
- Gestion des droits fine : chaque utilisateur n'accède qu'aux projets et tâches qui le concernent.
- Secrets sécurisés : les mots de passe et clés ne transitent jamais en clair.
- Planification automatique : les tâches récurrentes s'exécutent sans intervention humaine.
Ansible Semaphore 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 →