Короткий ответ
--check выполняет playbook в "сухом" режиме, показывая, какие задачи считались бы changed, без реального применения изменений, а --diff дополнительно показывает построчное различие для изменяемых файлов/шаблонов; точность ограничена тем, что не все модули полностью поддерживают check mode, а некоторые задачи зависят от результата предыдущих (ещё не реально выполненных) задач.
Как это работает подробнее
в check mode каждый модуль, поддерживающий этот режим, выполняет только проверку текущего состояния системы и сравнение с желаемым, не выполняя реального изменения; модули без явной поддержки check mode либо пропускаются, либо могут вести себя непредсказуемо.
Пример кода
commands.sh
$ ansible-playbook site.yml --check --diff --limit web1Что использовать на практике
- Практика.
--check --diffиспользуют как предварительный просмотр перед применением playbook к продовым серверам, аналогичноterraform plan; это особенно полезно перед массовым раскатом изменений конфигурации на большую группу хостов.
Подводные камни
- Ошибка. полностью доверять check mode для playbook с большим количеством задач
command/shell, которые не умеют нормально работать в режиме проверки и либо помечаются как "always changed", либо пропускаются, искажая картину; не использовать--diffи упускать, что именно изменится внутри шаблона конфигурации.