Python 如何分发ansible模块?

Python 如何分发ansible模块?,python,module,ansible,release,ansible-galaxy,Python,Module,Ansible,Release,Ansible Galaxy,如果有人开发了ansible角色,可以通过在github上创建一个repo来轻松分发它,该repo可通过ansible galaxy()进行安装 模块呢 是否有类似的“支持框架”来发布开源ansible模块(例如,一堆python文件),以便用户轻松安装?编辑:2020年,最好的方法是通过。集合允许对所有类型的Ansible内容(包括角色、模块和其他插件类型)进行适当的一流名称空间、文档和分发 2016年原始答案: 目前,最好的方法实际上是通过galaxy角色中的库目录。您仍然可以通过安装和使用

如果有人开发了ansible角色,可以通过在github上创建一个repo来轻松分发它,该repo可通过ansible galaxy()进行安装

模块呢


是否有类似的“支持框架”来发布开源ansible模块(例如,一堆python文件),以便用户轻松安装?

编辑:2020年,最好的方法是通过。集合允许对所有类型的Ansible内容(包括角色、模块和其他插件类型)进行适当的一流名称空间、文档和分发

2016年原始答案


目前,最好的方法实际上是通过galaxy角色中的
目录。您仍然可以通过安装和使用角色(以及捆绑模块),而无需实际执行角色中的任何内容。我们也在寻找使角色本身更像库的方法(例如,变量/空入口点,而不仅仅是硬编码到tasks/main.yml)。

角色可以在库文件夹中保存模块。要激活剧本中的模块,您需要首先将此角色添加到剧本中,或者作为其他角色的依赖项。否则Ansible不知道包含的模块。提供模块的角色不需要定义任何其他类似任务的内容。只需将您的
文件夹放入其中,当然还有所需的
meta/main.yml


由于Ansible 2.0,这甚至适用于(大多数)插件,例如动作插件或回调插件可以放入文件夹
action\u plugins
callback\u plugins
等。我认为连接、VAR和策略插件不是这样工作的,但这是出于明显的原因。这些插件在剧本级别工作,因此无法通过角色加载。

Ansible Galaxy看起来像个鬼城。通过从不同的回购协议中提取文件,我得到了更好的结果。核心模块尤其如此,因为发布修复的积压时间长达数月。请注意,使用Ansible 2.9不可能安装来自私有repo的集合(与角色不同)。本文档仅在下一版本(Ansible 3?)中包含此信息