Spec-Zone.ru › Ansible

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

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

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

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

    • Выполнение или предотвращение режима diff для задач

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

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

ansible-playbook foo.yml --check

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

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

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

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

Например:

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

  - 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: true
    register: changes_to_important_config

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

Примечание

До версии 2.2 существовал только эквивалент check_mode: false. Обозначение для этого было always_run: true.

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

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

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

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: false. Например:

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: false

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

Spec-Zone.ru

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