Spec-Zone.ru › Ansible

Проверка задач: режим проверки и режим сравнения

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

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

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

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

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

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

ansible-playbook foo.yml --check

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

Добавлено в версии 2.2.

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

  • Чтобы принудительно выполнить задачу в режиме проверки, даже если плейбук запущен без --check, задайте значение check_mode: true.
  • Чтобы принудительно выполнить задачу в обычном режиме и внести изменения в систему, даже если плейбук запущен с --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.

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

Добавлено в версии 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 для ansible-playbook можно использовать отдельно или вместе с --check. При запуске в режиме сравнения любой модуль, поддерживающий этот режим, сообщает о внесённых изменениях или, если он используется с --check, об изменениях, которые были бы внесены. Режим сравнения чаще всего применяется в модулях, работающих с файлами (например, в модуле template), но другие модули также могут показывать информацию «до и после» (например, модуль user).

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

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

Добавлено в версии 2.4.

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

Поскольку параметр --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–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/playbook_guide/playbooks_checkmode.html

Spec-Zone.ru

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