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