在ansible文档intro_configuration中,据说:
Ansible ......它也会在“./library”中寻找模块 目录和剧本一起。
我的情况是我获得gaqzi.ssh-config
提供的指令的唯一方法是ansible看到显式导出带有完整路径的ANSIBLE_LIBRARY;(
如果没有,那么ansible找不到gaqzi.ssh-config
模块,关于它应该的文档。
这是我要做的工作::
$ cd playbook # my folder were the plabooks are
$ ansible-galaxy install -p library gaqzi.ssh-config # I get a lib
$ export ANSIBLE_LIBRARY=/home/me/full/path/to/the/above/playbook/library
$ # the export above is annoying
我如何动态检查地点Ansible真的在寻找'图书馆'?
PS1:我正在使用ansible 2.0和vagrant 1.8.1 ::
$ vagrant --version
Vagrant 1.8.1
$ ansible --version
ansible 2.0.0.2
config file = /etc/ansible/ansible.cfg
$
PS2:我小心删除了所有的ansible.cfg / .ansible.cfg文件,除了ubuntu在/etc/ansible/ansible.cfg
中提供的文件
答案 0 :(得分:7)
Ansible实际上在current_playbook/library
目录中搜索。
您可以使用以下设置对此进行测试:
将此custom_module.py
放入library
子目录:
#!/usr/bin/python
import json
print json.dumps({"hello" : "world"})
制作以下test.yml
剧本:
---
- hosts: localhost
tasks:
- name: custom module
custom_module:
执行ansible-playbook -vv test.yml
使用ansible-galaxy
安装角色,而不是模块。
-p
的参数ansible-galaxy
定义了ROLE_PATH
。
如果您只需要ssh_config
角色的gaqzi.ssh-config
模块,
您需要将ssh_config.py
从current_playbook/library/gaqzi.ssh-config/library
复制到current_playbook/library
。
或者,您可以按预期将gaqzi.ssh-config
角色安装到roles
目录中
然后通过添加以下内容修改您的剧本以应用此角色:
roles:
- gaqzi.ssh-config
应用此角色后,模块ssh_config
将在您的剧本中可用。
答案 1 :(得分:1)
实际上,您可以将角色模块设置为角色的依赖项,例如在meta / main.yml文件中:
---
dependencies:
- { role: gaqzi.ssh-config }
然后您就可以开始使用您角色中的模块了。