Fick check mode att tala sanning i hela plattformen efter att ha hittat sex sonder som fattade beslut utifrån ett värde som värddatorn aldrig gav, eftersom command‑modulen i Ansible rapporterar framgång under --check medan den hoppar över kommandot helt.
Arbetet utfört: september 2026
sex sonder som fattade beslut utifrån ett värde som värddatorn aldrig gav
Situation. En torrkörning mot produktion ska vara det säkra sättet att ta reda på vad en ändring kommer att göra. I september 2026 föll en torrkörning på en kontroll som helt enkelt hade fel om värden, och rådde operatören att sätta en flagga som skulle ha luckrat upp en säkerhetssandlåda. Torrkörningen hade inte läst av värden. Den hade läst ett värde som värden aldrig gav och dragit en slutsats av det.
Uppgift. Varje sond vars resultat ligger till grund för ett beslut måste göras ärlig i check mode, och de som inte gick att göra ärliga måste säga det högt i stället för att förbli tysta.
Handling. Orsaken är en egenskap hos verktyget som är dokumenterad och lätt att glömma: command‑modulen körs inte i check mode, och det den registrerar är inte ett tomt resultat — det är en framgång med tom utdata. Varje villkor som läser den registrerade variabeln fattar därför beslut utifrån ett värde som aldrig mättes, och beslutet går åt det håll som dess egen logik råkar peka. En genomsökning av alla registrerade sonder hittade sex stycken, som ljög på var sitt sätt: en rapporterade att tjänstehanteraren accepterar varje enhetsdirektiv utan att ha frågat tjänstehanteraren, en annan rapporterade att inget behövde göras på en värd där brandväggen var avstängd. Var och en fick en av två former. En sond som läser befintligt tillstånd som körningen inte har rört markeras för att köras även i check mode. En sond som inte kan köras hoppas över, och ett meddelande anger vad som specifikt inte verifierades — eftersom tystnad i en körlogg ser exakt ut som ett godkänt resultat.
Resultat. En torrkörning mäter nu antingen något eller säger att den inte gjorde det, och inget av de två är det tredje alternativ den tidigare hade. Den allmänna regeln fördes in i utvecklarguiden i samma ändring: check mode får inte ljuga, och en sond som inte kan se måste tillkännage sin blindhet i stället för att härleda ett utslag ur den.
Se tillbaka på Byggde företagets egen infrastruktur som 19 Ansible‑playbooks och 34 roller på 12 065 rader YAML, som konvergerar en värd i drift mot ett deklarerat tillstånd, där varje play är idempotent. Läs vidare: Lade till en play för förhandskontroll som kör samma kod som konvergeringen mot operatörens lokala hemligheter på ungefär en sekund, efter att en halvt tillämpad produktionskörning kraschade vid sin nionde uppgift med swapinställningarna redan skrivna till värden i drift. Eller ta en titt på hela portföljen.
En del av en längre historik — och den finns i sin helhet här.
Varje post är skriven på samma sätt: situationen, uppgiften, vad vi gjorde och vad som förändrades.