changed#

Расширение тестирования ansible.builtin.changed проверяет, внесла ли задача изменения в ходе выполнения. Для этого расширение проверяет наличие ключа changed в данных о состоянии задачи. Если ключ существует и его значение равно true, результат проверки будет True.

У этого расширения есть также другое название – ansible.builtin.change.

Описание применения расширений тестирования приведено в документе Тестирование.

Особенности работы#

Для проверки, вносила ли задача изменения, используйте конструкцию:

<task_data> is ansible.builtin.changed

Здесь <task_data> – словарь с данными о задаче. Его можно получить с помощью директивы register.

Для инверсии результата добавьте not:

<task_data> is not ansible.builtin.changed

Входные значения#

Расширение принимает единственный входной параметр Input – словарь данных с результатом выполнения задачи.

Выходные значения#

Расширение возвращает значение True или False в зависимости от результата проверки:

  • False – если ключ changed отсутствует или имеет значение false;

  • True – если значение ключа changed равно true.

Пример#

Следующий пример демонстрирует использование ansible.builtin.changed для определения необходимости перезапуска службы после изменения конфигурационного файла.

Если файл был изменен, запускается задача перезапуска службы. В противном случае никаких действий не происходит.

---
#...
  tasks:
    - name: Update configuration file
      ansible.builtin.template:
        src: config.j2
        dest: /etc/myapp/config.yml
      register: config_update

    - name: Restart application service if config changed
      ansible.builtin.service:
        name: myapp
        state: restarted
      when: config_update is ansible.builtin.changed