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