保留Ansible自定义模块的位置

时间:2018-12-12 19:27:21

标签: ansible

在以下目录结构中,我必须创建一个“ anisble”目录的zip文件。想法是将所有内容(例如剧本,角色,清单详细信息和自定义模块)放入zip包中, 它的内容不应该依赖“ ansible”目录以外的任何内容。

<home>
   |<user>
       |__ansible
        |_____playbook.yml
            |_____inventory/
            |           |____myHosts
            |
            |_____library/
            |       |___my_Custom_module.py
            |_roles
            |   |____role1
            |____role2

我不能使用:“ /home/$USER/.ansible/plugins/modules/”,因为这将使解决方案特定于用户,并且“ /usr/share/ansible/plugins/modules/”位于ansible目录之外,并且需要特权(用户没有权限)

问题:

  1. 是否可以放置my_custom_module.py,以便在运行时ansible自动将其拾取?该目录必须位于“ ansible”目录中。

  2. 如果我在运行ansible剧本之前进行了此操作,它可以工作,但是在使用自定义模块之前,是否可以从ansible剧本中以编程方式进行此操作?

    export ANSIBLE_LIBRARY = library / my_custom_module.py

  3. 无论如何,我是否可以提供自定义模块相对于“ ansible”目录的路径?在任何配置文件或环境变量?请注意,我不能使用/etc ,/usr/ etc。一切都必须在ansible目录中,

  4. 有可能吗?

1 个答案:

答案 0 :(得分:1)

您可以在ansible.cfg目录内创建文件ansible,然后在该文件中设置DEFAULT_MODULE_PATH变量(library):

[defaults]
library = ./library

可以在Ansible documentation中找到有关Ansible配置的更多信息。

这是文档中有关此设置的内容:

  

说明:用冒号分隔的路径,Ansible将在其中搜索模块。

     

类型:pathspec

     

默认值:〜/ .ansible / plugins / modules:/ usr / share / ansible / plugins / modules

     

ini节:默认

     

ini键:库

     

环境:ANSIBLE_LIBRARY