15

У меня есть задача , которая проверяет , является ли мой процесс прослушивает порт 8080 и только тогда , когда код выхода не равен нулю, будет бегаю fail с сообщением.

Когда служба работает, она сообщает, что статус изменился. Я хочу это сказать, ok . Что на самом деле означает changed статус в Ansible?

2 ответа2

21

Выполняемые задачи должны быть идемпотентными. Например. если задача ничего не изменяет, она должна вернуть ok вместо changed . Большинство встроенных модулей и задач уже есть, но для таких задач, как command и shell вам нужно немного помочь в anible.

Для задачи, которая выполняет только проверку и ничего не изменяет, вы должны добавить:

changed_when: False
always_run: yes

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

Ради полноты такие задачи обычно сочетаются с другими, которые выполняют реальную модификацию, например:

- command: check command that returns true when no change needed
  register: result
  changed_when: False
  always_run: yes
- command: modify command
  when: result.rc != 0
9

Все, что зависит от чего-либо на цели, при выполнении будет "изменено", даже если это всего лишь команда оболочки для вывода чего-либо.

Чтобы подавить "измененный" статус, вы можете добавить в задачу следующую строку:

changed_when: false

Эта и другие важные вещи перечислены на этой странице документации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .