你应该开发一个模块吗?

开发 Ansible 模块很容易,但通常没有必要。在你开始编写新的模块之前,请询问

  1. 是否已经存在类似的模块?

现有的模块可能涵盖你想要的功能。Ansible 集合包含数千个模块。搜索我们的 包含的集合列表Ansible Galaxy 查看现有的模块是否满足你的需求。

  1. 你应该使用或开发一个动作插件而不是模块吗?

动作插件可能是获得所需功能的最佳方法。动作插件在控制节点而不是托管节点上运行,并且它们的功能可供所有模块使用。有关开发插件的更多信息,请阅读 开发插件页面.

  1. 你应该使用角色而不是模块吗?

现有的模块组合可能涵盖你想要的功能。你可以为这种用例编写角色。查看 角色文档.

  1. 你应该创建一个集合而不是单个模块吗?

你想要的功能可能对于单个模块来说太大。如果你想要将 Ansible 连接到新的云提供商、数据库或网络平台,你可能需要 开发新的集合.

  • 每个模块都应该具有简洁且定义明确的功能。基本上,遵循 UNIX 的“做好一件事”哲学。

  • 模块不应该要求用户了解要使用的 API/工具的所有底层选项。例如,如果无法记录必需的模块参数的合法值,则表示该模块可能会被拒绝。

  • 模块通常应该包含与资源交互的大部分逻辑。对 API 的轻量级包装器,其中不包含太多逻辑,可能会导致用户将太多逻辑卸载到剧本中,因此该模块可能会被拒绝。相反,尝试为与 API 的较小部分交互创建多个模块。

如果你的用例没有被现有的模块、动作插件或角色涵盖,并且你不需要创建多个模块,那么你就可以开始开发新的模块了。从以下主题中选择下一步

另请参阅

集合索引

浏览现有的集合、模块和插件

沟通

有问题?需要帮助?想分享你的想法?访问 Ansible 沟通指南