Каково значение задачи Ansible, сообщающей, что что-то изменилось?

20

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

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

соцген-хакер
источник

Ответы:

11

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

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

changed_when: false

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

wurtel
источник
27

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

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

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
user1338062
источник
2
это должен подтвердить ответ
мастиель