Kdy mi došlo, že preflight dělám špatně
Dlouho jsem si myslel, že preflight znamená "zkontroluj, jestli je server dostupný a Ansible nainstalovaný". Technicky to sice funguje, ale prakticky to nestačí. Run, který spustíte na špatném serveru nebo s neplatnou proměnnou, projde preflightem a pak způsobí přesně ten druh škody, kterému jste se chtěli vyhnout.
Zlomový okamžik byl konkrétní incident: staging run, proměnná DB_HOST nastavená na produkční hodnotu omylem překopírovanou z jiného workspace. Preflight nic neřekl, protože server byl dostupný. Run proběhl. Databáze v produkci dostala nekonzistentní data.
Co skutečný preflight musí zahrnovat
Po tom incidentu jsem přepsal, co preflight v LaraDep znamená. Nestačí technická dostupnost — musí se ověřit kontext runu. To jsou čtyři věci, které mi od té doby ušetřily víc stresu, než bych čekal:
- Správnost targetu: Je to opravdu ten server nebo skupina, kterou chci změnit? Žádná záměna staging/produkce.
- Kompletnost vstupů: Jsou všechny povinné proměnné vyplněné a mají smysluplné hodnoty?
- Konzistence konfigurace: Jsou závislosti, ze kterých template vychází, v očekávaném stavu?
- Ověření oprávnění: Má přihlášený uživatel právo spustit tuto změnu v tomto workspace?
Jak to vypadá v praxi
Preflight v LaraDep je gate, ne jen zelená kontrolka. Pokud jakákoli podmínka nesedí, run se nespustí a dostanete konkrétní popis, co chybí. Není to zdvořilé varování — je to tvrdé zastavení. A ano, zpočátku mě to trochu štvalo. Pak jsem si vzpomněl na ten incident a ocenil jsem to.
Pro týmy, kde víc lidí spouští změny, je tohle obzvlášť důležité. Seniorní člen si preflight mentálně provede sám. Juniorní člen nebo nový kolega ne — a právě pro ně je gate zásadní.
Co preflightem nevyřešíte
Preflight nezachytí logické chyby v samotném playboooku. Pokud vaše šablona dělá špatnou věc správně, preflight vám to neřekne. Proto je potřeba mít dobrou template composition a workflow disciplínu vedle preflightu, ne místo něj. Každý vrstva řeší jiný problém.
Další krok: Kontext k článku najdete v dokumentaci a na stránce srovnání.