是否应该开发模块?
开发 Ansible 模块很容易,但通常没有必要。在开始编写新模块之前,请问
是否已经存在类似的模块?
现有模块可能涵盖你想要的功能。Ansible 集合包含数千个模块。搜索我们的 包含的集合列表 或 Ansible Galaxy,看看是否有现有模块可以满足你的需求。
是否应该使用或开发动作插件而不是模块?
动作插件可能是实现你想要的功能的最佳方式。动作插件在控制节点上运行,而不是在受管节点上运行,并且它们的功能可用于所有模块。有关开发插件的更多信息,请阅读 开发插件页面。
是否应该使用角色而不是模块?
现有模块的组合可能涵盖你想要的功能。你可以为这种用例编写角色。请查看 角色文档。
是否应该创建集合而不是单个模块?
你想要的功能可能对于单个模块来说太大了。如果你想将 Ansible 连接到新的云提供商、数据库或网络平台,你可能需要 开发一个新的集合。
每个模块都应具有简洁且定义明确的功能。基本上,遵循 UNIX 的哲学,做好一件事。
模块不应要求用户了解要使用的 API/工具的所有底层选项。例如,如果无法记录所需模块参数的合法值,则表示该模块会被拒绝。
模块通常应包含与资源交互的大部分逻辑。围绕 API 的轻量级包装器(不包含太多逻辑)可能会导致用户将太多逻辑卸载到 playbook 中,因此该模块会被拒绝。相反,请尝试创建多个模块来与 API 的较小部分进行交互。
如果你的用例没有被现有模块、动作插件或角色覆盖,并且你不需要创建多个模块,那么你就可以开始开发新模块了。从下面的主题中选择下一步
我想开始开发新模块。
我想查看开发优秀模块的提示和约定。
我想要Ansible 架构的概述。
我想记录我的模块。
我想编写多个模块。