保存 Ansible 自定义模块的位置

P..*_*... 2 ansible

在以下目录结构中,我必须创建一个 zip 的“anisble”目录。这个想法是将 ansible 目录中的所有内容(如剧本、角色、库存详细信息和自定义模块)放入 zip 包中,并且其内容不应该对“ansible”目录之外的任何内容有任何依赖。

<home>
   |<user>
       |__ansible
        |_____playbook.yml
            |_____inventory/
            |           |____myHosts
            |
            |_____library/
            |       |___my_Custom_module.py
            |_roles
            |   |____role1
            |____role2
Run Code Online (Sandbox Code Playgroud)

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

问题:

  1. 是否有任何可能的位置可以放置 my_custom_module.py 以便在运行时它会自动被 ansible 选择?这必须位于“ansible”目录内的某个位置。

  2. 如果我在运行 ansible playbook 之前执行此操作,它可以工作,但是在使用自定义模块之前是否可以通过 ansible playbook 以编程方式执行此操作?

    导出 ANSIBLE_LIBRARY=library/my_custom_module.py

  3. 无论如何,我可以提供自定义模块相对于“ansible”目录的路径吗?在任何conf文件或环境变量中?请注意,我无法使用/etc ,/usr/ etc. 所有内容都必须位于 ansible 目录内,

  4. 有可能吗?

nwi*_*ler 5

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

[defaults]
library = ./library
Run Code Online (Sandbox Code Playgroud)

更多信息可以在Ansible 配置的Ansible 文档中找到。

以下是文档中关于此设置的说明:

描述:Ansible 将在其中搜索模块的冒号分隔路径。

类型:路径规范

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

Ini 部分:默认值

Ini 键: 库

环境:ANSIBLE_LIBRARY