您应该开发模块吗?

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

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

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

  1. 您应该使用或开发操作插件而不是模块吗?

操作插件可能是获得您想要的功能的最佳方式。操作插件在控制节点上而不是在受管节点上运行,并且它们的功能对所有模块都可用。有关开发插件的更多信息,请阅读开发插件页面

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

现有模块的组合可能涵盖您想要的功能。您可以为此类用例编写角色。请查看角色文档

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

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

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

  • 模块不应要求用户知道要使用的 API/工具的所有底层选项。例如,如果无法记录所需模块参数的合法值,则表明该模块将被拒绝。

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

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

另请参阅

集合索引

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

沟通

有问题?需要帮助?想分享您的想法?请访问 Ansible 通信指南