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

11611
socgen hacker

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

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

14

2 ответа на вопрос

19
user1338062

Ansible tasks should be idempotent. Eg. if the task does not modify anything, it should return ok instead of changed. Most builtin modules and tasks are already, but for tasks such as command and shell you need to help ansible a bit.

For a task that does purely checking and does not modify anything, you should add:

changed_when: False always_run: yes 

The latter allows the task to run even in check mode.

For the sake of completeness, such tasks are usually combined with another that does the actual modification, eg:

- 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 
это должен подтвердить ответ mastier 7 лет назад 1
9
wurtel

Anything that is dependent on something on the target will get the status "changed" when executed, even if it's just a shell command to echo something.

To suppress the "changed" status, you can add the following line to the task:

changed_when: false 

This and other relevant things are listed on this ansible doc page.

Похожие вопросы