# Домоглася, щоб check mode в Ansible казав правду

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

вересень 2026

**Ситуація.** Пробний прогін на продакшні має бути безпечним способом дізнатися, що зробить зміна. У вересні 2026 року пробний прогін упав на перевірці, яка просто хибно описувала хост, і порадив операторові встановити прапорець, що послабив би пісочницю безпеки. Пробний прогін хоста не читав. Він прочитав значення, якого хост ніколи не віддавав, і зробив із нього висновок.

**Завдання.** Кожен зонд, від результату якого залежить рішення, мав стати чесним у режимі перевірки (check mode), а ті, що не могли, мали заявляти про це вголос, а не мовчати.

**Дія.** Причина — задокументована властивість інструмента, про яку легко забути: модуль command у режимі перевірки не виконується, і в змінну register він записує не порожній результат, а успіх із порожнім виводом. Тож будь‑яка умова, що читає цю змінну, ухвалює рішення на підставі значення, яке ніхто не вимірював, і ухвалює його в той бік, куди випадково вказує її власна логіка. Перегляд усіх зондів, що записують результат у register, виявив шість таких, і кожен брехав по‑своєму: один повідомляв, що супервізор приймає будь‑яку директиву юніта, хоча самого супервізора не питав, інший — що робити нічого не треба, на хості з вимкненим брандмауером. Кожен зонд отримав одну з двох форм. Зонд, який читає вже наявний стан, не змінений прогоном, позначено так, щоб він виконувався навіть у режимі перевірки. Зонд, який виконатися не може, пропускається, а повідомлення називає, що саме лишилося неперевіреним, — бо тиша в журналі прогону читається точнісінько як успіх.

**Результат.** Тепер пробний прогін або щось вимірює, або повідомляє, що не виміряв, і жоден із цих варіантів не є тим третім, який він мав раніше. Загальне правило потрапило до посібника з розробки в тій самій зміні: режим перевірки не має права брехати, а зонд, який нічого не бачить, мусить заявити про свою сліпоту, а не виводити з неї вердикт.

---

- Роль: Інженер з автоматизації інфраструктури
- Категорії: [DevOps](https://engineer.company/uk/categories/devops/), [Інфраструктура](https://engineer.company/uk/categories/infrastructure/), [Автоматизація та CI/CD](https://engineer.company/uk/categories/automation/), [Надійність і резервне копіювання](https://engineer.company/uk/categories/reliability/), [Linux та сервери](https://engineer.company/uk/categories/linux/), [Тестування та QA](https://engineer.company/uk/categories/testing/)
- Послуги: [Infrastructure as Code](https://engineer.company/uk/services/infrastructure-as-code/), [DevOps та автоматизація CI/CD](https://engineer.company/uk/services/devops-cicd/), [Надійність та моніторинг (SRE)](https://engineer.company/uk/services/site-reliability/)

<https://engineer.company/uk/portfolio/made-ansible-check-mode-tell-the-truth/>
