使用git存储库中的ansible模块?

使用git存储库中的ansible模块?,ansible,ansible-playbook,Ansible,Ansible Playbook,我有一本剧本和一堆我写的模块 现在我想在下一个剧本中为不同的项目重用相同的模块 我真的想把这些模块推到一个公共git存储库中,然后告诉ansible使用git存储库中的模块 (有点像引用github的npm package.json) 我似乎找不到任何关于如何做到这一点的文档 现在,我正在使用一种变通方法,告诉人们npm安装存储库,然后定义ANSIBLE_库变量 我如何告诉playbook从github存储库或其他远程位置加载模块?目前没有解决方案。也许你可以添加一个剧本来将模块下载到你的项目中

我有一本剧本和一堆我写的模块

现在我想在下一个剧本中为不同的项目重用相同的模块

我真的想把这些模块推到一个公共git存储库中,然后告诉ansible使用git存储库中的模块

(有点像引用github的npm package.json)

我似乎找不到任何关于如何做到这一点的文档

现在,我正在使用一种变通方法,告诉人们npm安装存储库,然后定义ANSIBLE_库变量


我如何告诉playbook从github存储库或其他远程位置加载模块?

目前没有解决方案。也许你可以添加一个剧本来将模块下载到你的项目中,以避免npm,但那甚至不是那么好

我在剧本旁边的目录中有我的自定义模块。此目录在我的全局ansible.cfg文件中定义:

library = /usr/share/ansible

这里唯一的缺点是,我在所有PlaybBook上的模块版本都是相同的。

事实上,模块可以嵌套在角色中,因为时间很长。由于Ansible 2,大多数插件都可以实现这一点

角色中需要存储&的文件夹与playbook级别的文件夹相同。模块进入
,插件进入
*\u插件
动作插件
回调插件
过滤插件
等)

要使模块/插件可用,必须将角色应用于剧本(或作为其他角色的依赖项添加)

我所知道的唯一例外是变量插件,这完全有道理。因为变量插件是在读取清单时执行的,这发生在解释角色之前

vars\u插件仍然可以按角色分发,但是。幸运的是,您还可以在路径中使用通配符:

vars_plugins = roles/*/vars_plugins
不,所有这些都没有以任何方式记录在案。:)

最后,要分配角色,您可以使用:

直接使用git没有什么错。Ansible Galaxy实际上只是一个安装git存储库的工具。但既然Galaxy是Ansible标准,我建议至少提供一种与Galaxy兼容的格式。可以找到一个很好的(最佳?)实践,即如何将Galaxy角色与项目角色分开安装


这里有一个动作插件的例子:

这是一个很好的问题,我认为Ansible Galaxy的一个可怕的限制是只允许共享角色,而不提供共享模块的方式。同时,我认为我们的模块可以嵌套在角色中,因为Ansible 2甚至可以与插件一起工作。实际上这是可能的。只是没有记录在案。看看我的答案。低于/高于:
ansible-galaxy install foo