Qu'est-ce que la gestion de la configuration ?

Dans le contexte du développement logiciel et de la CI/CD, la gestion de la configuration consiste à enregistrer les détails d'une configuration d'infrastructure particulière afin de pouvoir identifier le moment où des modifications ont été introduites.

Un pipeline CI/CD comprend plusieurs environnements permettant de tester et de mettre en scène les logiciels avant leur publication. Pour que le pipeline et les tests fonctionnent efficacement, les environnements de pré-production doivent répliquer l'environnement de production aussi fidèlement que possible et rester cohérents entre les tests.

À cette fin, vous pouvez mettre en place une série de machines physiques ou virtuelles pour héberger ces environnements. Toutefois, au fil du temps et de l'application de correctifs, de l'installation de nouveaux paquets ou de la modification des paramètres réseau pour résoudre des problèmes spécifiques, ces serveurs commencent à dériver de la configuration d'origine de différentes manières.

Le résultat est une succession de serveurs à la configuration dégradée, également qualifiés de « snowflake ». Pire encore, supposons que les détails de chaque modification ne soient pas consignés quelque part. Dans ce cas, il devient beaucoup plus difficile de recréer le même environnement lorsqu'un serveur tombe en panne ou doit être répliqué pour faire évoluer vos opérations de test. La gestion de la configuration cherche à résoudre ce problème.

Le stockage des détails de la configuration dans votre système de contrôle des versions permet de visualiser toutes les modifications, ce qui facilite leur annulation en cas de problème et l'application des mêmes modifications à d'autres machines, afin de préserver la cohérence.

Si ces détails de configuration sont stockés dans un format structuré, tel qu'un fichier YAML ou XML, vous pouvez pousser la gestion de la configuration plus avant et automatiser la configuration des serveurs.

Une fois les modifications validées dans le contrôle des versions, elles sont automatiquement appliquées aux environnements concernés.

L'adoption d'une approche d'infrastructure en tant que code permet de démonter et de recréer automatiquement des machines virtuelles. Vous pouvez ainsi configurer votre pipeline CI/CD pour réinitialiser les environnements entre les déploiements. Cela permet de traiter un grand nombre de machines et de répliquer facilement les environnements si la demande de tests augmente.

Si vous utilisez des conteneurs pour déployer vos logiciels, certains éléments de configuration, tels que les dépendances logicielles, seront déplacés vers l'image du conteneur. Il reste toutefois nécessaire de configurer les serveurs hébergeant vos conteneurs. La codification et l'automatisation de la création de ces environnements présentent encore de nombreux autres avantages.