Spec-Zone.ru › Ansible 2.8

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

Новая функция в версии 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

Новая функция в версии 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

Spec-Zone.ru

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