Ansible 任务报告某些东西已经发生变化有什么意义?

Ansible 任务报告某些东西已经发生变化有什么意义?

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

当服务运行时,它会报告状态已更改。我希望它说ok。Ansiblechanged中的状态实际上是什么意思?

答案1

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

为了抑制“已更改”状态,您可以向任务添加以下行:

changed_when: false

此内容和其他相关内容列于Ansible 文档页面,用于了解如何在剧本中处理错误

答案2

Ansible 任务应该幂等。例如,如果任务没有修改任何内容,它应该返回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

相关内容