从git存储库使用ansible模块?

guy*_*abi 5 ansible ansible-playbook

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

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

我真的想将这些模块推送到公共git存储库,然后以某种方式告诉ansible使用git存储库中的模块。

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

我似乎找不到有关如何执行此操作的任何文档。

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

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

udo*_*dan 5

实际上模块可以嵌套在角色内部很长一段时间了。从 Ansible 2 开始,大多数插件都可以做到这一点。

模块插件需要存储在角色中的文件夹与剧本级别相同。模块进入library, 插件进入*_plugins( action_plugins, callback_plugins,filter_plugins等)

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

我唯一知道的例外是可变插件,这完全有道理。由于在读取库存时执行变量插件,这发生在解释角色之前。

vars_plugins仍然可以在角色中分配,但路径需要添加到ansible.cfg. 幸运的是,您还可以在路径中使用通配符:

vars_plugins = roles/*/vars_plugins
Run Code Online (Sandbox Code Playgroud)

不,所有这些都没有以任何方式记录。:)

最后,您可以使用Ansible Galaxy来分配角色:

ansible-galaxy install foo
Run Code Online (Sandbox Code Playgroud)

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

这是一个动作插件的例子:https : //galaxy.ansible.com/udondan/ssh-reconnect/