guy*_*abi 5 ansible ansible-playbook
我有一本剧本和一堆写的模块。
现在,我想在下一个剧本中将相同的模块重用于不同的项目。
我真的想将这些模块推送到公共git存储库,然后以某种方式告诉ansible使用git存储库中的模块。
(有点像npm package.json引用github)
我似乎找不到有关如何执行此操作的任何文档。
现在,我正在使用一种变通办法,告诉人们npm安装存储库,然后定义ANSIBLE_LIBRARY变量。
我如何告诉剧本从github存储库或其他远程位置加载模块?
实际上模块可以嵌套在角色内部很长一段时间了。从 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/
| 归档时间: |
|
| 查看次数: |
2318 次 |
| 最近记录: |