Режим проверки («сухой запуск»)
Новая версия 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.5/user_guide/playbooks_checkmode.html