Ansible
Dans le domaine de l’exploitation d’applications Web, la cohérence et la reproductibilité des infrastructures sont essentielles pour garantir un déploiement fiable et efficace des applications. Les environnements informatiques peuvent être complexes, avec de multiples composants interdépendants tels que des serveurs, des bases de données, des reverse proxies, des mono-services applicatifs, des réseaux et des services cloud.
Sans une gestion rigoureuse, les différences entre les environnements de développement, de test et de production peuvent entraîner des erreurs lors du déploiement des applications, des failles de sécurité et des temps d’arrêt inattendus. Une infrastructure reproductible permet de réduire ces risques en assurant que chaque instance de l’application est déployée dans un environnement stable et prévisible.
Les intérêts de l’utilisation d’Ansible
Ansible est une solution open-source qui propose une approche puissante pour automatiser la gestion et la configuration de l’infrastructure. En utilisant des « playbooks » Ansible, les développeurs et « devops » peuvent décrire de manière déclarative l’état désiré de leur infrastructure, et Ansible se charge d’appliquer ces configurations de manière cohérente sur tous les nœuds de l’infrastructure. Concrètement, si une infrastructure est composée de plusieurs serveurs, Ansible peut installer tous les composants de base du système (PHP, nginx, PostgreSQL, RabbitMQ, Varnish, ou tout autre outil nécessaire au fonctionnement de l’application) de manière uniforme, les configurer de manière identique, créer les réseaux privés, etc. Ainsi, l’approche itérative et sujette à erreurs que l’on constate, si une infrastructure de production est gérée manuellement, disparaît complétement et laisse la place à un traitement automatisé, reproductible, historisé, robuste et rapide de toutes les étapes qui permettent à votre application Web d’être disponible en ligne.
Le recours systématique à Ansible pour toutes les tâches d’administration système simplifie considérablement les processus de déploiement et de configuration, réduisant ainsi les erreurs humaines et les temps d’arrêt. De plus, Ansible ne nécessite pas l’installation d’agents sur les nœuds cibles, ce qui le rend facile à déployer et à utiliser dans divers environnements.
Ansible dispose d’une vaste communauté de contributeurs, d’une roadmap claire et d’un niveau de maintenance professionnels. De très nombreux playbooks sont disponibles sur Github ou sur Ansible Galaxy, la plateforme d’hébergement des rôles proposés par la communauté. Nos amis de redirection.io y proposent ainsi des rôles pour installer et configurer l’agent redirection.io ou les proxies nginx et Apache. La grande variété de modules disponibles permet de répondre à de nombreux cas d’usage, de sorte que le déploiement d’applications complexes peut s’appuyer sur de nombreux rôles maintenus, entretenus et encadrés par de nombreux contributeurs.
Comment JoliCode emploie Ansible
JoliCode n’est ni une société d’infogérance ni un hébergeur. Pour autant, disposer de robustes compétences en administration système est une des composantes de notre approche, car elle permet d’avoir une excellente compréhension des problématiques auxquelles seront confrontés les hébergeurs et équipes de « run » au cours de l’exploitation des logiciels que nous produisons.
Nous maintenons un ensemble de rôles Ansible qui constituent un socle de gestion de la configuration, fréquemment employé dans le cadre des projets que nous réalisons, pour notre compte ou pour le compte de nos clients. Afin de simplifier encore l’emploi d’Ansible par les équipes de développement de JoliCode, notre utilisation d’Ansible est dockerisée et est pilotée par un ensemble de tâches écrites avec Castor, le projet de task-runner open-source écrit par JoliCode. Une fois mis en place au sein d’un projet, notre stack Ansible permet ainsi le déclenchement de déploiements directement depuis l’interface d’intégration continue – Github Actions, Gitlab CI/CD ou CircleCI par exemple.
Au-delà de l’utilisation directe de cette collection interne de rôles, l’emploi d’Ansible nous permet de pouvoir dialoguer de manière constructive avec les équipes des hébergeurs, en étant force de proposition sur l’outillage d’exploitation à mettre en place pour garantir à nos clients la plus haute disponibilité possible tout en conservant des budgets d’hébergement raisonnables.
Nos derniers articles sur Ansible
Nous publions régulièrement notre état de l’art ou nos recommandations concernant les outils que nous mettons en œuvre.
Simplifier la génération de certificats SSL avec Let’s Encrypt
Lorsque que nous devons assurer nous-mêmes l’hébergement de certains projets (pour des clients ou des projets internes), nous utilisons Ansible pour provisionner les serveurs et/ou déployer nos applications. Au fil des années, nous avons rassemblé notre expérience avec Ansible au…
Lire la suite de l’article Simplifier la génération de certificats SSL avec Let’s Encrypt
Symfony Messenger 💛 systemd
In this article we will explore how to use systemd properly to run Symfony Messenger workers. What are Symfony Messenger and systemd? Symfony documentation says: The Messenger component helps applications send and receive messages to / from other applications or via message queues.…