Режим проверки («сухой запуск»)
Новая функция в версии 1.1.
- Включение или отключение режима проверки для задач
- Информация о режиме проверки в переменных
- Отображение различий с
--diff
При выполнении ansible-playbook с --check он не внесет никаких изменений на удаленных системах. Вместо этого любой модуль, поддерживающий «режим проверки» (а большинство основных модулей это поддерживают, но не все), сообщит, какие изменения он бы внес, вместо их фактического внесения. Другие модули, не поддерживающие режим проверки, также не будут предпринимать никаких действий, но не будут сообщать и о том, какие изменения они, возможно, внесли бы.
Режим проверки — это всего лишь симуляция, и если у вас есть шаги, использующие условные операторы, зависящие от результатов предыдущих команд, он может быть менее полезным. Однако он отлично подходит для базового управления конфигурацией на одном узле за раз.
Пример:
ansible-playbook foo.yml --check
Включение или отключение режима проверки для задач
Новая функция в версии 2.2.
Иногда вам может потребоваться изменить поведение режима проверки отдельных задач. Это делается с помощью параметра check_mode, который можно добавить к задачам.
Существует два варианта:
- Принудительно запустить задачу в режиме проверки, даже если playbook вызван без
--check. Это называетсяcheck_mode: yes. - Принудительно запустить задачу в обычном режиме и внести изменения в систему, даже если playbook вызван с
--check. Это называетсяcheck_mode: no.
Примечание
До версии 2.2 существовал только эквивалент check_mode: no. Обозначение для этого было always_run: yes.
Вместо yes/no можно использовать выражение Jinja2, подобно when.
Пример:
tasks:
- name: this task will make changes to the system even in check mode
command: /something/to/run --even-in-check-mode
check_mode: no
- name: this task will always run under checkmode and not change the system
lineinfile:
line: "important config"
dest: /path/to/myconfig.conf
state: present
check_mode: yes
Запуск отдельных задач с check_mode: yes может быть полезен для написания тестов для модулей Ansible, как для тестирования самого модуля, так и для проверки условий, при которых модуль вносит изменения. С помощью register (см. Условные операторы) можно проверить потенциальные изменения.
Информация о режиме проверки в переменных
Новая функция в версии 2.1.
Если вы хотите пропустить или игнорировать ошибки в некоторых задачах в режиме проверки, вы можете использовать булеву магическую переменную ansible_check_mode, которая будет установлена в True во время режима проверки.
Пример:
tasks:
- name: this task will be skipped in check mode
git:
repo: ssh://git@github.com/mylogin/hello.git
dest: /home/mylogin/hello
when: not ansible_check_mode
- name: this task will ignore errors in check mode
git:
repo: ssh://git@github.com/mylogin/hello.git
dest: /home/mylogin/hello
ignore_errors: "{{ ansible_check_mode }}"
Отображение различий с --diff
Новая функция в версии 1.1.
Параметр --diff для ansible-playbook отлично работает с --check (описано выше), но также может использоваться самостоятельно. При передаче этого флага и если модуль это поддерживает, Ansible вернёт внесенные изменения или, если используется с --check, изменения, которые должны были быть внесены. Это в основном используется в модулях, которые манипулируют файлами (например, шаблонами), но и другие модули могут отображать информацию «до и после» (например, для пользователя). Поскольку функция diff производит большое количество вывода, её лучше использовать при проверке одного хоста за раз. Например:
ansible-playbook foo.yml --check --diff --limit foo.example.com
Новая функция в версии 2.4.
Параметр --diff может раскрывать конфиденциальную информацию. Этот параметр можно отключить для задач, указав diff: no.
Пример:
tasks:
- name: this task will not report a diff when the file changes
template:
src: secret.conf.j2
dest: /etc/secret.conf
owner: root
group: root
mode: '0600'
diff: no
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.8/user_guide/playbooks_checkmode.html