将您的模块贡献给现有的 Ansible 集合

如果您想向现有的集合贡献模块,必须满足社区的客观要求和主观要求。请阅读以下详细信息,并回顾我们的 模块开发技巧

被某些集合接收的模块会被包含在 PyPI 上的每个 Ansible 版本中。然而,贡献给这些集合并不是分发模块的唯一方式 - 您可以 创建自己的集合,将模块嵌入到 Galaxy 的角色(roles)中,或者简单地分享您的模块代码副本以供 本地使用

贡献模块:客观要求

要向大多数 Ansible 集合贡献模块,您必须

  • 使用 Python 或 Windows 的 Powershell 编写模块

  • 使用 AnsibleModule 公共代码

  • 支持 Python 2.6 和 Python 3.5 - 如果您的模块无法支持 Python 2.6,请在 DOCUMENTATION 的要求(requirements)部分说明所需的最低 Python 版本及理由

  • 使用正确的 Python 3 语法

  • 遵循 PEP 8 Python 代码风格规范 - 更多信息请参阅 pep8

  • 将您的模块在 GPL 许可证(GPLv3 或更高版本)下授权

  • 理解 DCO 协议,该协议适用于对 Ansible CoreAnsible Documentation 仓库的贡献。

  • 符合 Ansible 的 格式和文档标准

  • 为您的模块提供全面的 测试

  • 尽量减少模块依赖

  • 尽可能支持 check_mode

  • 确保您的代码可读性强

  • 如果模块被命名为 <something>_facts,则应是因为其主要目的是返回 ansible_facts。不要将不具备此功能的模块命名为 _facts。仅将 ansible_facts 用于特定于宿主机的信息,例如网络接口及其配置、安装的操作系统和程序。

  • 查询/返回通用信息(而非 ansible_facts)的模块应命名为 _info。通用信息是指非宿主机特定的信息,例如在线/云服务的信息(您可以从同一台宿主机访问同一在线服务的不同账户),或从该机器可访问的虚拟机和容器的信息。

某些集合可能适用额外的要求。请查看各个集合的仓库以获取更多信息。

在提交 PR/提案之前,请确保您的模块符合这些要求。如果您有疑问,请参阅 Ansible 沟通指南,了解如何联系社区。

贡献 Ansible:主观要求

如果您的模块满足这些客观要求,集合维护者将审查您的代码,以判断其是否清晰、简洁、安全且易于维护。他们会考虑您的模块是否提供了良好的用户体验、有帮助的错误提示、合理的默认值等。这个过程是主观的,没有绝对的验收标准。为了最大程度地提高模块被接受的机会,请遵循我们的 模块开发技巧

其他检查清单