Idempotence
Une opération est idempotente si son exécution répétée produit exactement
le même résultat que son exécution unique. mkdir -p /tmp/app est
idempotent : le relancer dix fois laisse le dossier dans le même état
qu’après une seule exécution. mkdir /tmp/app sans l’option ne l’est pas :
la deuxième exécution échoue.
Pourquoi c’est central en infrastructure
Un système de configuration ou de déploiement qu’on peut relancer sans risque, encore et encore, avec le même résultat à chaque fois, tolère les échecs partiels et les relances : un pipeline qui plante à mi-chemin peut être rejoué depuis le début sans dupliquer d’effets de bord. Terraform, Kubernetes et les modules déclaratifs d’Ansible sont conçus pour cette propriété : ils comparent un état voulu à un état réel avant d’agir, plutôt que d’exécuter une suite d’actions à l’aveugle.
Ce qui casse l’idempotence silencieusement
Toute commande qui exécute une action sans vérifier l’état au préalable
(un shell qui ajoute une ligne à un fichier, un script qui incrémente un
compteur) n’a aucune idempotence par construction, même si l’outil qui
l’entoure (Ansible, un pipeline CI) est lui-même conçu pour l’être.
L’idempotence est une propriété de chaque opération individuelle, pas
seulement de l’outil qui les orchestre.