Ansible任务报告发生了什么变化的重要性是什么?


20

我有一个检查我的进程是否正在侦听8080端口的任务,并且仅当退出代码不为零时,我才会运行fail一条消息。

服务运行时,它将报告状态已更改。我要说ok。什么是一个changed状态实际上Ansible意味着什么呢?

Answers:


11

依赖目标上任何事物的任何事物在执行时都会获得“已更改”状态,即使它只是回显某些事物的shell命令。

要取消显示“已更改”状态,可以将以下行添加到任务中:

changed_when: false

这个和其他相关的事物在此ansible文档页面上列出。


27

艰巨的任务应该是幂等的。例如。如果任务没有进行任何修改,则应返回ok而不是changed。大多数内置模块和任务已经存在,但是对于诸如command和的任务,shell您需要一点帮助。

对于仅检查而不做任何修改的任务,应添加:

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

2
这应该得到验证的答案
玛斯特,2017年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.