Ansible不在./library和playbook一起寻找模块

时间:2016-05-15 08:00:07

标签: ansible

在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中提供的文件

2 个答案:

答案 0 :(得分:7)

Ansible实际上在current_playbook/library目录中搜索。

您可以使用以下设置对此进行测试:

  1. 将此custom_module.py放入library子目录:

    #!/usr/bin/python
    import json
    print json.dumps({"hello" : "world"})
    
  2. 制作以下test.yml剧本:

    ---
    - hosts: localhost
      tasks:
        - name: custom module
          custom_module:
    
  3. 执行ansible-playbook -vv test.yml

  4. 使用ansible-galaxy安装角色,而不是模块
    -p的参数ansible-galaxy定义了ROLE_PATH

    如果您只需要ssh_config角色的gaqzi.ssh-config模块, 您需要将ssh_config.pycurrent_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 }

然后您就可以开始使用您角色中的模块了。