Atlantis : deux verrous différents, pas un seul
Atlantis verrouille un répertoire Terraform contre deux PR concurrentes. Ce verrou n'a rien à voir avec le lock d'état Terraform, un mécanisme indépendant.
Le code d'infrastructure a une propriété qu'aucun autre code n'a : il peut être vrai à l'écriture et faux une heure plus tard. Ce parcours couvre la gestion de cet écart.
10 articles · 3 sections
Là où l’écart entre le code et le réel se matérialise.
Atlantis verrouille un répertoire Terraform contre deux PR concurrentes. Ce verrou n'a rien à voir avec le lock d'état Terraform, un mécanisme indépendant.
Un module Terraform n'a pas son propre state : il partage celui du module racine. Ce détail structurel change tout ce qu'on peut faire avec, et casser.
Terraform provisionne l'infrastructure, Ansible la configure. La confusion vient d'un chevauchement réel mais partiel, pas d'un vrai choix à trancher.
Terraform détecte la dérive au prochain plan, quand quelqu'un pense à l'exécuter. Crossplane la corrige en continu, via le même mécanisme qui gère déjà les pods.
Le choix d'un outil IaC ne se résume pas à une préférence de syntaxe. Licence, écosystème de providers, et le vrai coût d'une migration une fois engagé.
Pourquoi le state local casse en équipe, comment marchent les backends distants et le verrouillage, et comment récupérer proprement d'un verrou bloqué.
Rejouer sans casser — la propriété qui rend le reste possible.
Puppet résout un graphe de dépendances avant d'exécuter, Ansible exécute les tâches dans l'ordre écrit. Un portage ligne à ligne perd cette résolution implicite.
Pourquoi un playbook rejoué ne devrait rien changer, comment le check mode ment sur les modules à commande shell, et une règle simple pour trier ses tâches.
Construire une machine reproductible plutôt que la réparer.
cloud-init ne s'exécute qu'une fois par instance, un état tracké localement. Cloner une VM sans l'effacer fait croire à cloud-init qu'il a déjà tourné, clés SSH dupliquées à la clé.
Packer construit une image immuable une fois sur une machine temporaire. cloud-init configure chaque instance à son premier démarrage. Les confondre casse le pipeline.