创建新的集合
从Ansible 2.10开始,相关的模块应该在一个集合中开发。Ansible核心团队和社区编制了这些模块开发技巧和窍门,以帮助开发其产品Ansible模块的公司以及为第三方产品开发Ansible模块的用户。有关集合格式和更多开发指南的详细说明,请参阅开发集合。
注意
许可要求 Ansible强制执行以下许可要求
- 实用程序(
lib/ansible/module_utils/
中的文件)可能有两种许可证之一 module_utils
中仅用于特定厂商的硬件、提供商或服务的文件可以使用GPLv3+许可。在module_utils
下添加使用GPLv3+许可的新文件需要核心团队批准。所有其他
module_utils
必须使用BSD许可,以便GPL许可的第三方和Galaxy模块可以使用它们。如果对
module_utils
中文件的适当许可证有疑问,Ansible核心团队将在Ansible核心社区会议期间做出决定。
- 实用程序(
所有与Ansible一起发布的其他文件,包括所有模块,必须使用GPL许可证(GPLv3或更高版本)。
现有的许可要求仍然适用于ansible/ansible(ansible-core)中的内容。
以前位于ansible/ansible或集合中并已移动到新集合的内容必须保留其在先前存储库中的许可证。
以前提交者的版权声明也必须保留在任何已移动的文件中。
开始编码之前
此先决条件列表旨在帮助确保您开发出与ansible-core配合良好的高质量模块,并提供无缝的用户体验。
阅读开发模块中链接的所有页面;尤其要注意将您的模块贡献到现有的Ansible集合。
我们鼓励符合PEP 8规范。有关更多信息,请参阅pep8。
我们鼓励支持Python 2.6+和Python 3.5+。
查看Ansible Galaxy并查看您所在功能区域(例如云、网络、数据库)中的命名约定。
能力越大,责任越大:Ansible集合维护者有责任帮助保持内容最新,并定期发布他们负责的集合。与所有成功的社区项目一样,集合维护者应该密切关注已报告的问题和贡献。
我们强烈建议进行单元和/或集成测试。当需要外部资源(例如云或网络设备)时,单元测试尤其宝贵。有关更多信息,请参阅测试Ansible。
命名约定
插件和模块的完全限定集合名称 (FQCN) 包括三个元素
Galaxy命名空间,通常代表公司或组
集合名称,通常代表产品或操作系统
- 插件或模块名称
始终小写
使用下划线 (
_
) 字符分隔单词单数而不是复数,例如
command
而不是commands
例如,community.mongodb.mongodb_linux
或cisco.meraki.meraki_device
。
如果GitHub(或其他地方)上的组织和存储库名称与Ansible Galaxy上的命名空间和集合名称匹配,则很方便,但不是必需的。但是,您选择的插件名称在您的代码存储库和Galaxy上的集合工件中始终相同。
联系我们
在编码之前传播您的想法有助于您采用良好的实践并避免常见的错误。阅读“开始编码之前”部分后,您应该对模块的结构有合理的了解。编写您提出的插件和/或模块名称列表,并简要说明每个模块的功能。在Ansible论坛上发布该列表,以便Ansible社区可以审查您的想法的一致性和熟悉程度。一致、可预测和熟悉的名称和功能使您的集合更易于使用。
获取支持的地方
Ansible拥有一个充满活力且知识渊博的模块开发者社区,这是一个获得答案的好资源。访问Ansible沟通指南了解更多详情。
必需文件
您的集合应包含以下文件才能使用
一个
__init__.py
文件 - 一个空文件,用于初始化命名空间并允许Python导入文件。 *必需*至少一个插件,例如
/plugins/modules/$your_first_module.py
。 *必需*如果需要,一个或多个
/plugins/doc_fragments/$topic.py
文件 - 代码文档,例如有关常用参数的详细信息。 *可选*如果需要,一个或多个
/plugins/module_utils/$topic.py
文件 - 多个模块之间共享的代码,例如常用参数。 *可选*
准备好这些文件后,请再次查看将您的模块贡献到现有的Ansible集合。如果您正在创建新的集合,则您负责与您的存储库相关的所有程序,包括设置贡献规则、查找审阅者以及测试和维护集合中的代码。
Git或GitHub新手
我们知道这可能是您第一次使用Git或GitHub。以下指南可能对您有所帮助