我有一本剧本和一堆我写的模块。使用从git仓库的可靠模块?
现在我想在我的下一个剧本中为不同的项目重复使用相同的模块。
我真的想将这些模块推送到公共git存储库,然后以某种方式告诉可以使用git存储库中的模块。
(有点像故宫的package.json引用github上)
我似乎无法找到如何做到这一点的任何文档。
现在,我正在使用一种解决方法,告诉人们npm安装存储库,然后定义ANSIBLE_LIBRARY变量。
如何告诉playbook从github存储库或其他远程位置加载模块?
我有一本剧本和一堆我写的模块。使用从git仓库的可靠模块?
现在我想在我的下一个剧本中为不同的项目重复使用相同的模块。
我真的想将这些模块推送到公共git存储库,然后以某种方式告诉可以使用git存储库中的模块。
(有点像故宫的package.json引用github上)
我似乎无法找到如何做到这一点的任何文档。
现在,我正在使用一种解决方法,告诉人们npm安装存储库,然后定义ANSIBLE_LIBRARY变量。
如何告诉playbook从github存储库或其他远程位置加载模块?
目前没有解决方案。也许你可以添加一个手册来下载模块到你的项目中以避免npm,但那不是那么好。
我有我的自定义模块在我的剧本旁边的目录中。此目录将在我的全球ansible.cfg文件中定义:
library = /usr/share/ansible
这里唯一的drawbag是我永诺对所有playbboks模块的版本相同。
其实这是可能的。这只是没有记录。看到我的答案。低于上述。 :) – udondan
实际上,模块可以嵌套在角色中相当长的时间。由于Ansible 2,即使大部分插件都可以使用。
需要存储在角色内的modules & plugins的文件夹与playbook级别相同。模块进入library
,插件进入*_plugins
(action_plugins
,callback_plugins
,filter_plugins
等)
为了使模块/插件,则可用的角色已被应用到PlayBook(或添加其他角色依赖)
只有我所知道的例外是可变插件,这是完全合理的。由于在读取库存时会执行可变插件,这是在解释角色之前发生的。
vars_plugins
依然可以分配在角色中,但是path needs to be added in the ansible.cfg
。幸运的是,您还可以在路径中使用通配符:
vars_plugins = roles/*/vars_plugins
并且不,所有这些都没有以任何方式记录。 :)
最后,分配的角色,您可以使用Ansible Galaxy:
ansible-galaxy install foo
没有错,直接使用Git。 Ansible Galaxy实际上只是一个安装git存储库的工具。但是由于Galaxy是Ansible标准,我建议至少要提供Galaxy兼容格式。一个好的(最好的)练习如何安装Galaxy角色与项目角色分开,可以找到here。
下面是一个例子一个动作插件:https://galaxy.ansible.com/udondan/ssh-reconnect/
这是一个非常好的问题,我认为这是Ansible银河只允许角色的共享,而不是提供一种方式来共享模块可怕的限制。 – udondan
与此同时,我认为我们的模块可以嵌套在角色中,因为Ansible 2甚至可以使用插件。 – udondan