Fikk check‑modus til å fortelle sannheten på tvers av hele plattformen etter å ha funnet seks sonder som avgjorde ut fra en verdi verten aldri hadde gitt, fordi Ansibles command‑modul melder suksess under --check og samtidig hopper helt over kommandoen.
Arbeidet utført: september 2026
seks sonder som avgjorde ut fra en verdi verten aldri ga
Situasjon. En tørrkjøring mot produksjon skal være den trygge måten å finne ut hva en endring vil gjøre på. I september 2026 feilet en tørrkjøring på en assert som rett og slett tok feil om verten, og rådet operatøren til å sette et flagg som ville ha lempet på en sikkerhetssandkasse. Tørrkjøringen hadde ikke lest verten. Den hadde lest en verdi verten aldri ga, og trukket en konklusjon av den.
Oppgave. Hver probe med et resultat som ligger til grunn for en beslutning, måtte gjøres ærlig i check mode, og de som ikke kunne gjøres det, måtte si det høyt i stedet for å tie.
Handling. Årsaken er en egenskap ved verktøyet som er dokumentert og lett å glemme: command‑modulen kjører ikke i check mode, og det den registrerer, er ikke et tomt resultat — det er en suksess med tom utdata. Enhver betingelse som leser den registrerte verdien, avgjør derfor på grunnlag av noe som aldri ble målt, og den avgjør i den retningen dens egen logikk tilfeldigvis peker. En gjennomsøking av alle registrerte prober fant seks av dem, og hver løy på sin måte: én meldte at tjenestestyreren godtar alle enhetsdirektiver uten å ha spurt tjenestestyreren, en annen meldte at det ikke var noe å gjøre på en vert der brannmuren var slått av. Hver fikk én av to former. En probe som leser tilstand som fantes fra før, og som kjøringen ikke har rørt, er merket for å kjøre også i check mode. En probe som ikke kan kjøre, hoppes over, og en melding navngir hva som konkret ikke ble verifisert — fordi taushet i en kjørelogg ser akkurat ut som en bestått sjekk.
Resultat. En tørrkjøring måler nå enten noe eller sier at den ikke gjorde det, og ingen av delene er det tredje alternativet den hadde før. Den generelle regelen gikk inn i utviklingsveiledningen i samme endring: check mode skal ikke lyve, og en probe som ikke kan se, er pålagt å melde fra om blindheten sin i stedet for å utlede en dom av den.
Se tilbake på Bygde selskapets egen infrastruktur som 19 Ansible‑playbooks og 34 roller på 12 065 linjer YAML, som konvergerer en vert i drift mot en deklarert tilstand der hver play er idempotent. Les videre: La til en preflight‑play som kjører den samme koden som konvergeringen mot operatørens lokale hemmeligheter på omtrent ett sekund, etter at en halvveis gjennomført produksjonskjøring stoppet på den niende oppgaven med swap‑innstillingene allerede skrevet til verten i drift. Eller ta en titt på hele porteføljen.
Ett stykke av en lengre oversikt — og den ligger i sin helhet her.
Hver oppføring er skrevet på samme måte: situasjonen, oppgaven, hva vi gjorde, og hva som endret seg.