在ansible文档intro_configuration中,据说:
Ansible ...它还将在“./library”目录中查找与剧本一起的模块。
在我的情况下,唯一可以通过ansible看到由gaqzi.ssh-config
提供的指令的方法是用完整路径显式导出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
中提供的文件
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
将在您的剧本中提供。
实际上,您可以将角色模块设置为角色的依赖项,例如在meta / main.yml文件中:
---
dependencies:
- { role: gaqzi.ssh-config }
然后,您可以开始在您的角色中使用该模块。