Spec-Zone.ru › Ansible 2.4

Режим проверки («сухой запуск»)

Новая функция в версии 1.1.

  • Включение или отключение режима проверки для задач
  • Информация о режиме проверки в переменных
  • Отображение различий с --diff

При выполнении ansible-playbook с --check он не внесет никаких изменений на удаленных системах. Вместо этого любой модуль, поддерживающий режим «проверки» (что включает в себя большинство основных модулей, но не все), сообщит о том, какие изменения были бы внесены, а не внесет их. Другие модули, не поддерживающие режим проверки, также не будут выполнять никаких действий, но не будут сообщать о том, какие изменения они могли бы внести.

Режим проверки — это просто симуляция, и если у вас есть шаги, использующие условные операторы, которые зависят от результатов предыдущих команд, он может быть менее полезен. Однако он отлично подходит для случаев управления конфигурацией на одном узле за раз.

Пример:

ansible-playbook foo.yml --check

Включение или отключение режима проверки для задач

Новая функция в версии 2.2.

Иногда вам может потребоваться изменить поведение режима проверки для отдельных задач. Это делается с помощью параметра check_mode, который можно добавить к задачам.

Есть два варианта:

  1. Принудительно выполнить задачу в режиме проверки, даже если playbook вызывается без --check. Это называется check_mode: yes.
  2. Принудительно выполнить задачу в обычном режиме и внести изменения в систему, даже если 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

© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.4/playbooks_checkmode.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API