Spec-Zone.ru › Ansible 2.9

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

Новая версия с 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.9/user_guide/playbooks_checkmode.html

Spec-Zone.ru

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