Dassault Aviation a mis en oeuvre diverses initiatives concourant à la démarche DevOps : mise en place d’une usine logicielle, automatisation des déploiements, automatisation de l’infrastructure, Infrastructure as Code, API management et CMDB. La coordination de ces initiatives est assurée par un groupe de travail « DevOps » fonctionnant en mode « communauté ».
Chacune de ces initiatives a atteint un bon niveau de maturité et apporte de la valeur. La mise en œuvre de DevOps vise cependant une valeur bien plus importante, l’automatisation de bout en bout apportée par la complémentarité de toutes ces initiatives.
L’atteinte de cette valeur a déjà pu être démontrée dans des déploiements rapides et maîtrisés, permis par l’association « usine logicielle » / « déploiement applicatif automatisé » / « Infrastructure as Code » / « automatisation de la création de VM », dont il est question dans ce retour d’expérience.
Les moyens mis en oeuvre
Pour chacune de ces initiatives, des outils ont été mis en place et des règles et méthodes ont été définies, formalisées et partagées.
- L’usine logicielle supporte le processus d’intégration continue et repose principalement sur la suite Atlassian (GIT/BitBucket, Jira, Confluence) et l’orchestrateur Jenkins.
- Le déploiement applicatif est automatisé via XL Deploy.
- L’infrastructure as Code (IaC) utilise comme outils standards Ansible et AWX, et la configuration de l’infrastructure est gérée dans le GIT.
- La création/suppression de VM est gérée par CloudForms.
La méthode de déploiement
L’usine logicielle et XL Deploy sont intégrés et permettent d’assurer l’automatisation de la chaîne de CI/CD.
Or, avant tout déploiement, l’infrastructure doit être préalablement installée et configurée, et les composants d’infrastructure définis dans les référentiels techniques utilisés par les outils de déploiement automatisé.
Pour permettre ces opérations de configuration d’infrastructure, les moyens d’IaC ont été utilisés, en définissant au préalable des templates normalisés, gérés dans GIT, portant la définition de la configuration des applications (serveurs, middlewares, stockages…), et en créant des automates capables d’appeler les automates unitaires IaC.
La gamme de déploiement, délégable aux développeurs, se décompose ainsi :
- Création des VM (via un portail à ce jour)
- Définition de la configuration de l’infrastructure nécessaire au déploiement de l’application.
- Configuration de l’infrastructure et enregistrement dans les référentiels techniques via les moyens d’IaC
- Déploiement du code sur les environnements pré-configurés.