Домоглася, щоб check mode в Ansible казав правду
Домоглася, щоб check mode показував правду на всій платформі, після того як знайшла шість перевірок, що ухвалювали рішення за значенням, якого хост ніколи не повертав: модуль command в Ansible у режимі --check звітує про успіх, узагалі не виконуючи команду.
Роботу виконано: вересень 2026

Фото: jackmac34 / Pixabay 
Фото: Elsemargriet / Pixabay
шість перевірок вирішували за значенням, якого хост не давав
Ситуація. Пробний прогін на продакшні має бути безпечним способом дізнатися, що зробить зміна. У вересні 2026 року пробний прогін упав на перевірці, яка просто хибно описувала хост, і порадив операторові встановити прапорець, що послабив би пісочницю безпеки. Пробний прогін хоста не читав. Він прочитав значення, якого хост ніколи не віддавав, і зробив із нього висновок.
Завдання. Кожен зонд, від результату якого залежить рішення, мав стати чесним у режимі перевірки (check mode), а ті, що не могли, мали заявляти про це вголос, а не мовчати.
Дія. Причина — задокументована властивість інструмента, про яку легко забути: модуль command у режимі перевірки не виконується, і в змінну register він записує не порожній результат, а успіх із порожнім виводом. Тож будь‑яка умова, що читає цю змінну, ухвалює рішення на підставі значення, яке ніхто не вимірював, і ухвалює його в той бік, куди випадково вказує її власна логіка. Перегляд усіх зондів, що записують результат у register, виявив шість таких, і кожен брехав по‑своєму: один повідомляв, що супервізор приймає будь‑яку директиву юніта, хоча самого супервізора не питав, інший — що робити нічого не треба, на хості з вимкненим брандмауером. Кожен зонд отримав одну з двох форм. Зонд, який читає вже наявний стан, не змінений прогоном, позначено так, щоб він виконувався навіть у режимі перевірки. Зонд, який виконатися не може, пропускається, а повідомлення називає, що саме лишилося неперевіреним, — бо тиша в журналі прогону читається точнісінько як успіх.
Результат. Тепер пробний прогін або щось вимірює, або повідомляє, що не виміряв, і жоден із цих варіантів не є тим третім, який він мав раніше. Загальне правило потрапило до посібника з розробки в тій самій зміні: режим перевірки не має права брехати, а зонд, який нічого не бачить, мусить заявити про свою сліпоту, а не виводити з неї вердикт.
Попередня робота: Сервери, які можна відтворити з нуля. Читати далі: Додала секундну попередню перевірку секретів. Або перегляньте повне портфоліо.
Одна частина довшого переліку — і він увесь на цьому сайті.
Кожен запис написано однаково: ситуація, завдання, що ми зробили і що змінилося.

