是否需要开发模块?

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

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

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

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

动作插件可能是获得所需功能的最佳方法。动作插件运行在控制节点而不是被管理节点上,其功能可用于所有模块。有关开发插件的更多信息,请阅读开发插件页面

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

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

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

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

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

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

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

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

另请参见

集合索引

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

沟通

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