Додала секундну попередню перевірку секретів
Додала попередній плей (preflight), який приблизно за секунду проганяє той самий код, що й converge, на локальних секретах оператора, — після того як продакшн‑запуск обірвався на дев'ятому завданні, застосувавшись лише наполовину, а налаштування swap уже було записано на робочий хост.
Роботу виконано: вересень 2026

Фото: huynhkimdaihuu30051999 / Pixabay 
Фото: FrankyFromGermany / Pixabay
запуск у продакшні відрепетирувано приблизно за секунду
Ситуація. Експлуатаційні секрети щойно розділили так, щоб кожен хост мав власний репозиторій резервних копій, парольну фразу й перемикач тривоги. Код репозиторію був правильним. У зашифрованому сховищі секретів оператора досі лежало попереднє значення, розраховане на один хост, і цієї розбіжності ніщо не могло помітити, бо сховище навмисно існує лише на машині оператора й невидиме для власних перевірок якості репозиторію.
Завдання. Збоям такого класу потрібне було місце, де вони обходилися б дешево, бо щойно один такий збій обійшовся дорого.
Дія. Перший прогін converge після зміни під’єднався до живого хоста, виконав вісім завдань і відмовився на дев’ятому — правильно, але посеред прогону, який уже записав на продакшн налаштування свопу. Наполовину застосований converge гірший за відмову, тож написано попередній плей (preflight): він не звертається до жодного хоста, виконується локально, не збирає фактів і проганяє на сховищі оператора ті самі два файли завдань, що й справжній converge. Відповідь він дає приблизно за секунду, і підготовка хоста запускає його першим. Ключове рішення — це той самий код, а не друга реалізація того самого правила, бо перевірка, що переказує правило іншою мовою, рано чи пізно з ним розійдеться, і розійдеться мовчки. Під час написання виявилася пастка, яку він мало не створив: факти, встановлені в межах плею, живуть і після нього, тож об’єднання попередньої перевірки та converge в один виклик передало б справжній ролі парольну фразу, яку попередня перевірка вже отримала, і перевірка пройшла б на сховищі, яке досі було хибним. Цю пастку спершу відтворили й лише потім закрили захистом — в обох файлах завдань.
Результат. Секрет, який не вдається отримати, тепер коштує двосекундної відмови на ноутбуці, а не частково застосованої зміни на живому сервері. Попередню перевірку свідомо не позначено тегом для безумовного виконання і свідомо не серіалізовано, і обидва ці вибори записано як рішення, а не як значення за замовчуванням.
Попередня робота: Домоглася, щоб check mode в Ansible казав правду. Читати далі: Запустила контейнери на Podman і Quadlet. Або перегляньте повне портфоліо.
Одна частина довшого переліку — і він увесь на цьому сайті.
Кожен запис написано однаково: ситуація, завдання, що ми зробили і що змінилося.

