我有一个任务来检查我的进程是否正在侦听端口 8080,并且只有当退出代码不为零时,我才会运行fail一条消息。
当服务运行时,它报告状态已更改。我要它说ok。changedAnsible中的状态实际上意味着什么?
use*_*062 31
Ansible 任务应该是幂等的。例如。如果任务没有修改任何东西,它应该返回ok而不是changed。大多数内置模块和任务已经存在,但是对于诸如command和 之类的任务,shell您需要帮助 ansible。
对于纯粹检查并且不修改任何内容的任务,您应该添加:
changed_when: False
always_run: yes
Run Code Online (Sandbox Code Playgroud)
后者允许任务甚至在检查模式下运行。
为了完整起见,这些任务通常与另一个进行实际修改的任务相结合,例如:
- 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
Run Code Online (Sandbox Code Playgroud)
小智 12
任何依赖于目标上的东西的东西在执行时都会得到“改变”的状态,即使它只是一个 shell 命令来回显某些东西。
要取消“已更改”状态,您可以在任务中添加以下行:
changed_when: false
Run Code Online (Sandbox Code Playgroud)
这个和其他相关的东西列在这个 ansible doc page 上。
| 归档时间: |
|
| 查看次数: |
20645 次 |
| 最近记录: |