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

问题描述 投票:6回答:2

在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
2个回答
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

使用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
投票

实际上,您可以将角色模块设置为角色的依赖项,例如在meta / main.yml文件中:

---
dependencies:
  - { role: gaqzi.ssh-config }

然后,您可以开始在您的角色中使用该模块。

© www.soinside.com 2019 - 2024. All rights reserved.