咱们是否应该开发一个模组?
开发 Ansible 模组并不难,但往往没有必要。在咱们开始编写某个新模组之前,要问一下:
- 是否已有类似的模组?
某个现有模组可能涵盖了咱们想要的功能。Ansible 专辑包含了数千个模组。请检索我们的 所包含专辑列表 或 Ansible Galaxy,看看现有模组是否能满足咱们的需求。
- 咱们是否应该使用或开发某个
action
类型的插件,而不是模组?
action
插件可能是获得咱们想要的功能最佳方式。action
插件运行于控制节点而非托管节点,且他们的功能对所有模组都可用。有关开发插件的更多信息,请阅读 开发插件 页面。
- 咱们是否应使用角色而不是模组?
现有模组的某种组合,可能会涵盖咱们想要的功能。咱们可以为这类用例编写某个角色。请查看 角色文档。
- 咱们是否应创建一个专辑而不是单一模组?
单个模组可能无法实现咱们想要的功能。若咱们打算将 Ansible 连接到某个新的云服务提供商、数据库或网络平台,咱们可能需要 开发一个新的专辑。
- 每个模组都应具有简洁且良好定义的功能。基本上,要遵循 UNIX 的做好一件事哲学;
- 模组不应要求用户了解,要用到的 API/工具的所有底层选项。例如,如果无法为某个必需的模组参数合法值编写文档,就意味着该模组将被拒绝;
- 模组通常应包含与某项资源交互的大部分逻辑。对不包含太多逻辑的某个 API 的一个轻量级封装器,可能会导致用户将太多逻辑,转移到到 playbook 中,因此该模组就会被拒绝。相反,要尝试创建多个与 API 中较小的单个部分进行交互的模组。
若咱们的用例在现有模组、action
插件或角色中未被涵盖,而且咱们不需要创建多个模组,那么咱们就可以开始开发一个新模组了。
(End)