0Pricing
DevOps Bootcamp · 课时

返回 JSON 并遵循 changed 约定

遵循模块结果协议

返回 JSON 并遵循 changed 约定 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。

模块使用 JSON 进行通信

模块完成工作后,必须向 Ansible 返回一个 JSON 结果。控制器正是通过它了解主机上发生了什么。

使用 exit_json 退出

成功时请调用 module.exit_json。它会将结果打印为 JSON,并以正确的退出代码干净地结束模块。

module.exit_json(changed=True, name='web')

changed 键很重要

请始终如实报告 changed。它会告诉 Ansible 您是否修改了系统,从而决定输出中显示 ok 还是 changed。

module.exit_json(changed=False)

修改前先检查状态

要正确处理 changed,请先读取当前状态。如果状态已经符合目标,就设置 changed=False,不要执行任何操作。

if current == desired:
    module.exit_json(changed=False)

返回额外数据

您可以向 exit_json 添加任意键,它们会出现在任务结果中。用户之后可以注册并重新使用这些数据。

module.exit_json(changed=True, user_id=42)

使用 fail_json 处理失败

出现问题时,请调用 module.fail_json 并提供清晰的消息。Ansible 会将任务标记为失败,并显示您的文本。

module.fail_json(msg='API request timed out')

不要直接打印

不要使用 print 或原始 stdout。Ansible 只期待最后那个 JSON 对象,因此多余的 print 会破坏结果并导致任务失败。

只能调用一次退出函数

每个模块恰好以一个 exit_json 或 fail_json 结束。两者都会引发 SystemExit,因此它们之后的内容都不会运行。

有用的消息很重要

请在结果中加入友好的 msg,说明您执行了什么操作。好的消息可以将令人困惑的运行过程变成易读的信息。

module.exit_json(changed=True, msg='Created user web')

匹配内置模块的行为

让您的输出表现得像核心模块一样:报告 changed,返回有意义的字段,并在失败时明确说明原因。保持一致性才能建立信任。

结果决定一切

处理程序、条件语句和已注册的变量都会读取您的 JSON。正确设置 changed,才能让您的模块成为合格的 Ansible 模块。

快速检查

请想一想,在没有修改任何内容时,您的模块应该报告什么。

回顾

成功时以 exit_json 结束,出错时使用 fail_json,如实报告 changed,并且绝不要打印原始输出。这就是模块结果协议。📦

常见问题解答

「返回 JSON 并遵循 changed 约定」课时是免费的吗?

是的 — 「返回 JSON 并遵循 changed 约定」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。

「返回 JSON 并遵循 changed 约定」这节课中我会学到什么?

遵循模块结果协议 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 DevOps Bootcamp 需要有经验吗?

无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「返回 JSON 并遵循 changed 约定」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 DevOps Bootcamp 课中编写并运行代码吗?

能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 何时构建自定义模块
  2. AnsibleModule 与参数规范
  3. 返回 JSON 并遵循 changed 约定
  4. 在您的模块中支持 Check Mode
← 返回 DevOps Bootcamp