【问题标题】:Location to keep Ansible custom modules保存 Ansible 自定义模块的位置
【发布时间】:2018-12-12 19:27:20
【问题描述】:

在以下目录结构中,我必须创建一个“anisble”目录的 zip。想法是将所有内容放在 ansible 目录中,例如剧本、角色、库存详细信息和自定义模块到一个 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 playbook 之前执行此操作,它可以工作,但是在使用自定义模块之前是否可以通过 ansible playbook 以编程方式执行此操作?

    导出 ANSIBLE_LIBRARY=library/my_custom_module.py

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

  4. 有可能吗?

【问题讨论】:

    标签: ansible


    【解决方案1】:

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

    [defaults]
    library = ./library
    

    有关 Ansible 配置的更多信息,请参见 Ansible documentation

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

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

    类型:路径规范

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

    Ini 部分:默认值

    Ini 键:库

    环境:ANSIBLE_LIBRARY

    【讨论】:

    • 感谢您的回复,如果我需要在任何角色中使用 custom_module 怎么办?我根据您的建议进行了测试,剧本正在选择模块,但是当我将代码移动到角色并尝试使用自定义模块时,它无法识别它。你能指导我吗?
    • 我猜./library 是剧本的有效路径,但不是角色中的tasks/main.yml
    • 您可以尝试将${PWD}/library 作为值吗?那应该指向运行 Ansible 的目录,即 playbook 所在的目录...
    • 不工作,我需要刷新任何东西还是只是更改正常?
    猜你喜欢
    • 2021-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    • 2022-11-07
    • 1970-01-01
    • 2020-05-03
    • 2016-07-17
    相关资源
    最近更新 更多