Röviden: A drift nem a Terraform hibája, hanem folyamathiba: valaki kézzel módosított valamit. A detektálás és a policy-kényszer együtt akadályozza meg, hogy a kód és a valóság szétcsússzon.
Az infrastruktúra kódból való kezelésének (IaC) egész ígérete azon áll, hogy a kód a valóság hű tükre. A drift az, amikor ez a tükör megreped: a tényleges infrastruktúra eltér attól, amit a kód leír. Valaki gyorsan módosított valamit a webes felületen egy incidens közben, egy automatizmus megváltoztatott egy beállítást, vagy egy kézi „csak most az egyszer” javítás bent maradt. A drift nem a Terraform hibája — folyamathiba, és folyamattal is kell kezelni.
Miért veszélyes a drift?
Amíg a kód és a valóság egyezik, az IaC minden ígérete áll: reprodukálhatóság, auditálhatóság, biztonságos változtatás. Amint drift keletkezik, ezek sorra megbuknak. A következő apply váratlanul felülírhatja a kézi módosítást (vagy épp nem), az újraépítés más eredményt ad, és senki nem bízik többé abban, hogy a kód a valóság. A drift a bizalom lassú mérgezése.
Honnan jön?
- Incidenskezelés — baj van, valaki gyorsan javít kézzel, és elfelejti visszavezetni a kódba.
- Több eszköz — egy másik automatizmus vagy csapat módosít ugyanazon az erőforráson.
- Kézi kísérletezés — valaki „csak kipróbál” valamit élesben, és bent marad.
- Külső folyamat — egy menedzselt szolgáltatás vagy operátor megváltoztat egy beállítást.
A detektálás: nézd rendszeresen
A drift ellen az első védelem, hogy egyáltalán észreveszed. Ez azt jelenti, hogy rendszeresen összeveted a kódot a valósággal — a legtöbb IaC-eszköz tud ehhez „mit változtatna” jellegű futtatást, ami megmutatja az eltéréseket anélkül, hogy módosítana. Ha ezt automatizáltan, ütemezetten futtatod, akkor a drift napokon belül kiderül, nem hetekkel később egy váratlan incidens során.
A javítás iránya: melyik az igazság?
Amikor driftet találsz, két irányba javíthatsz. Vagy a kódot igazítod a valósághoz (ha a kézi módosítás jogos és megtartandó volt), vagy a valóságot a kódhoz (ha a kézi módosítás nem kívánt). A kulcs, hogy ez tudatos, ember által hozott döntés legyen — ne egy automatizmus söpörje felül vakon a kézi változtatást, ami esetleg épp egy fontos éles javítás volt.
A megelőzés: kényszerítsd ki a folyamatot
A detektálás gyógyír, de a megelőzés jobb. A legerősebb eszköz, hogy a kézi módosítás lehetőségét szűkíted: a production infrastruktúrát ideális esetben csak a pipeline módosíthatja, közvetlen kézi hozzáférés nélkül vagy erősen korlátozva. Ha a kézi változtatás fizikailag nehéz, a drift nagy része meg sem születik. A policy-kényszer (a nem megfelelő változtatás automatikus tiltása) ezt egészíti ki.
A kultúra része is
Végül a drift kezelése kulturális kérdés is. Ha a csapatban norma, hogy minden változás a kódon keresztül megy — még az incidens közbeni gyors javítás is utólag visszavezetésre kerül —, akkor a drift ritka kivétel marad. Ha a kézi „gyors javítás” elfogadott gyakorlat, akkor a legjobb eszközök sem tartják kordában.
A drift forrásainak feltérképezése
A drift kezeléséhez érdemes érteni, honnan jön. A leggyakoribb forrás az incidenskezelés: baj van, valaki gyorsan javít kézzel, és elfelejti visszavezetni a kódba. Emellett egy másik automatizmus vagy csapat is módosíthat ugyanazon az erőforráson, egy kézi kísérlet bent maradhat, vagy egy menedzselt szolgáltatás változtathat meg egy beállítást. Ha ismered a forrásokat, célzottabban tudsz védekezni.
A lényeg felismerése, hogy a drift nem a Terraform hibája, hanem folyamathiba. Az eszköz csak tükrözi, hogy a kód és a valóság szétcsúszott — a megelőzés és a detektálás a folyamatban dől el.
A rendszeres detektálás
A drift elleni első védelem, hogy egyáltalán észreveszed. A legtöbb IaC-eszköz tud "mit változtatna" jellegű, csak-olvasó futtatást, ami megmutatja az eltéréseket módosítás nélkül. Ha ezt automatizáltan, ütemezetten futtatod, akkor a drift napokon belül kiderül, nem hetekkel később egy váratlan incidens során.
- Futtass ütemezett, csak-olvasó drift-ellenőrzést.
- Riassz, ha eltérést talál.
- Ember döntse el, melyik irányba javíts (kód vagy valóság).
A megelőzés kikényszerítése
A detektálás gyógyír, de a megelőzés jobb. A legerősebb eszköz, hogy a kézi módosítás lehetőségét szűkíted: a production infrastruktúrát ideális esetben csak a pipeline módosíthatja, közvetlen kézi hozzáférés nélkül vagy erősen korlátozva. Ha a kézi változtatás fizikailag nehéz, a drift nagy része meg sem születik. Ehhez társul a kulturális norma: minden változás a kódon át megy, még az incidens közbeni gyors javítás is utólag visszavezetésre kerül.
Mit jelent ez neked?
A drift a kód és a valóság szétcsúszása, és a bizalmat rombolja, amiért egyáltalán kódból kezeled az infrastruktúrát. Futtass rendszeres, csak-olvasó drift-ellenőrzést és riassz rá, hogy napokon belül kiderüljön. Amikor eltérést találsz, ember döntse el, melyik irányba javíts. A legjobb védelem viszont a megelőzés: szűkítsd a kézi módosítás lehetőségét, kényszerítsd ki a pipeline-on át vezető változtatást, és tedd kulturális normává. A drift így kivétel lesz, nem életforma.