Spec-Zone.ru › Ansible 2.11

Проверка задач: режим проверки и режим diff

Ansible предоставляет два режима выполнения, которые проверяют задачи: режим проверки (check mode) и режим diff. Эти режимы можно использовать по отдельности или вместе. Они полезны при создании или редактировании playbook или роли, когда вы хотите узнать, что будет выполнено. В режиме проверки Ansible выполняется без внесения каких-либо изменений на удалённых системах. Модули, поддерживающие режим проверки, сообщают о изменениях, которые они бы внесли. Модули, не поддерживающие режим проверки, ничего не сообщают и ничего не делают. В режиме diff Ansible предоставляет сравнение до и после. Модули, поддерживающие режим diff, отображают подробную информацию. Вы можете комбинировать режим проверки и режим diff для подробной проверки вашего playbook или роли.

  • Использование режима проверки

    • Принудительное включение или отключение режима проверки для задач
    • Пропуск задач или игнорирование ошибок в режиме проверки
  • Использование режима diff

    • Принудительное включение или отключение режима diff для задач

Использование режима проверки

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

ansible-playbook foo.yml --check

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

Новое в версии 2.2.

Если вы хотите, чтобы определенные задачи всегда выполнялись или никогда не выполнялись в режиме проверки, независимо от того, запускается ли playbook с --check, или без него, вы можете добавить опцию check_mode к этим задачам:

  • Чтобы принудительно запустить задачу в режиме проверки, даже если playbook вызван без --check, установите check_mode: yes.
  • Чтобы принудительно запустить задачу в обычном режиме и внести изменения в систему, даже если playbook вызван с --check, установите check_mode: no.

Например:

tasks:
  - name: This task will always make changes to the system
    ansible.builtin.command: /something/to/run --even-in-check-mode
    check_mode: no

  - name: This task will never make changes to the system
    ansible.builtin.lineinfile:
      line: "important config"
      dest: /path/to/myconfig.conf
      state: present
    check_mode: yes
    register: changes_to_important_config

Запуск отдельных задач с check_mode: yes может быть полезен для тестирования модулей Ansible, как для тестирования самого модуля, так и для тестирования условий, при которых модуль вносит изменения. Вы можете регистрировать переменные (см. Условные выражения) для этих задач, чтобы получить еще больше подробностей о потенциальных изменениях.

Примечание

Прежде чем версия 2.2 существовало только эквивалент check_mode: no. Обозначение для этого было always_run: yes.

Пропуск задач или игнорирование ошибок в режиме проверки

Новое в версии 2.1.

Если вы хотите пропустить задачу или проигнорировать ошибки в задаче, когда вы запускаете Ansible в режиме проверки, вы можете использовать булеву магическую переменную ansible_check_mode, которая устанавливается в True при запуске Ansible в режиме проверки. Например:

tasks:

  - name: This task will be skipped in check mode
    ansible.builtin.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
    ansible.builtin.git:
      repo: ssh://git@github.com/mylogin/hello.git
      dest: /home/mylogin/hello
    ignore_errors: "{{ ansible_check_mode }}"

Использование режима diff

Опция --diff для ansible-playbook может использоваться отдельно или вместе с --check. При запуске в режиме diff любой модуль, поддерживающий режим diff, сообщает об изменениях, внесенных или, если используется вместе с --check, о изменениях, которые должны быть внесены. Режим diff чаще всего используется в модулях, которые манипулируют файлами (например, модуль template), но и другие модули могут отображать информацию «до и после» (например, модуль user).

Режим diff генерирует большое количество вывода, поэтому его лучше использовать при проверке одного хоста за раз. Например:

ansible-playbook foo.yml --check --diff --limit foo.example.com

Новое в версии 2.4.

Принудительное включение или отключение режима diff для задач

Поскольку опция --diff может раскрыть конфиденциальную информацию, вы можете отключить её для задачи, указав diff: no. Например:

tasks:
  - name: This task will not report a diff when the file changes
    ansible.builtin.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.10/user_guide/playbooks_checkmode.html

Spec-Zone.ru

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