Git comme source unique de vérité pour la configuration

Qu’est-ce que gitops ? Il s’agit de la pratique consistant à utiliser Git comme source unique de vérité (SSOT) pour la configuration de l’infrastructure. Dans ce guide, vous apprendrez à utiliser Git pour stocker et gérer la configuration de vos serveurs de manière simple afin de pouvoir suivre les modifications, simplifier les déploiements et garantir la cohérence tout au long du processus de déploiement de votre infrastructure. Vous découvrirez également les outils et les meilleures pratiques qui rendent gitops possible en fournissant une piste d’audit claire et en rendant les déploiements plus rapides et plus faciles à gérer.

Git as a single source of truth for configuration

1) Présentation de GitOps

GitOps est une méthodologie et des outils pour aider les organisations à faire de Git leur source unique de vérité pour l’infrastructure de production. L’objectif est de fournir un contrôle d’accès sécurisé et fiable, un déploiement automatisé, une observabilité, un suivi de la conformité et des capacités d’audit, le tout par le biais de politiques déclaratives simples dans les dépôts Git. GitOps privilégie les personnes par rapport aux machines (par rapport à DevOps), les outils open source par rapport aux outils propriétaires (par rapport à Cloud Native), et la confiance par rapport au contrôle (par rapport à la sécurité). Le résultat final est un environnement dans lequel chacun peut voir tout ce qui se passe, ce qui permet une meilleure collaboration entre les équipes.

Git as a single source of truth for configuration

2) L’infrastructure en tant que code (IaC)

La construction et l’approvisionnement de l’infrastructure sont des domaines dans lesquels vous pouvez utiliser l’IaC. Les raisons sont doubles : il est fastidieux de taper tout ce code, mais cela signifie également que vous avez moins de possibilités d’introduire des erreurs par inadvertance. Git est un système de contrôle de version (VCS) construit sur le logiciel BitKeeper de Linus Torvalds. Contrairement aux systèmes VCS centralisés comme Subversion ou Mercurial, Git fonctionne en suivant chaque changement effectué dans son dépôt depuis sa création. Cela le rend particulièrement efficace pour gérer de grands projets avec de nombreux contributeurs sur de longues périodes de temps – exactement ce dont nous avons besoin dans notre boîte à outils IaC. Avec des outils comme chef-solo , Ansible , et SaltStack , nous pouvons spécifier de manière déclarative l’apparence d’un environnement via une collection de fichiers suivis par notre référentiel – nous n’exécutons pas réellement ces étapes jusqu’à ce que nous voulions mettre à jour notre environnement cible avec les changements de notre référentiel ! Cette méthode nous encourage à être explicite sur la façon dont nous voulons que quelque chose soit configuré ; il n’y a pas de malentendu lorsque les choses tournent mal ou lorsqu’un autre membre de l’équipe a des attentes légèrement différentes des nôtres.

3) Test de l’IaC

L’infrastructure en tant que code est formidable, mais elle ne fonctionne que si votre équipe de développement l’utilise. Vous devez les surveiller, que ce soit par le biais de demandes de retrait ou de revues de code. Lorsque les modifications sont effectuées manuellement, il est difficile de savoir ce qui a changé et quand. Il peut donc s’avérer extrêmement difficile de déterminer quelle version est à l’origine d’une panne ou d’un autre problème, ce qui rend le dépannage et l’application de correctifs plus compliqués que nécessaire. La solution est simple : utilisez un logiciel d’intégration continue open-source (comme GitLab) et créez des tests pour chaque modification que vous apportez dans IaC – par exemple, si vous utilisez Jelastic CloudScripting pour déployer de nouvelles piles, testez vos modifications avant de les valider en mettant à jour une pile préexistante (pre-prod) au lieu d’en créer une nouvelle.

Testing IaC

4) Quel est le rapport avec Git ?

Git, plus précisément les outils de gestion des dépôts git, est généralement utilisé pour suivre les modifications du code. Les puissantes capacités de branchement de Git et son architecture distribuée facilitent la gestion de multiples branches de code. Si nous appliquons ces mêmes concepts et méthodes aux ressources autres que le code, comme les fichiers de configuration de l’infrastructure et les scripts d’exécution des tâches à distance, nous pouvons créer une source unique de vérité qui permettra l’automatisation. Imaginez que des milliers de serveurs soient automatiquement mis à jour avec de nouvelles configurations à 1 heure du matin chaque dimanche, ou chaque fois qu’un commit est poussé vers master sur votre projet GitHub. Les avantages sont nombreux : des temps de déploiement plus rapides et moins d’erreurs humaines, pour n’en citer que deux !

5) Gestion de la branche

Le branchement est une bonne chose, il nous permet de travailler sur plusieurs fonctionnalités et modifications à la fois, et de les fusionner plus tard lorsque nous sommes prêts. Par exemple, disons que vous travaillez à l’amélioration des performances de votre site. Il se peut que vous souhaitiez modifier certains styles CSS en plus d’apporter des changements à la configuration de vos serveurs. Vous pouvez effectuer ces modifications CSS sur leur propre branche (par exemple, /css-perf) et la pousser vers GitHub ou GitLab avec git push origin /css-perf . Vous pouvez alors effectuer vos modifications sur le serveur sans craindre de casser les modifications CSS ! Les branches sont géniales ! Cela dit, il y a une chose dont vous devez être conscient : Les branches rendent le suivi de l’historique très difficile.

Branch Management

Écrit par

Matthieu Robin Hidora
Matthieu ROBIN
10/03/2022

Matthieu Robin est le CEO de Hidora, un leader stratégique expérimenté, un ancien administrateur système qui a géré et configuré plus d’environnements manuellement que quiconque sur la planète et après avoir compris que cela pouvait être fait en quelques clics a créé Hidora SA. Il intervient régulièrement lors de conférences et aide les entreprises à optimiser leurs processus métier grâce à DevOps. Suivez-le sur Twitter.

Recevoir nos actualités