如何分发ansible模块?

How to distribute ansible modules?

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

模块呢?

有没有类似的"supporting framework"发布一个开源的ansible模块(比如一堆python文件)方便用户安装?

编辑:在 2020 年,最好的方法是 creating an Ansible Collection。集合允许适当的 first-class 命名空间、文档和分发各种 Ansible 内容,包括角色、模块和其他插件类型。

2016 年原始答案

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

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

从 Ansible 2.0 开始,这甚至适用于(大多数)插件,例如动作插件或回调插件可以放入文件夹 action_pluginscallback_plugins 等。我认为连接、变量和策略插件不能这样工作,但这是出于显而易见的原因。这类插件在 playbook 级别工作,因此无法通过角色加载。