ansible 如何在命名空间中搜索模块?

问题描述 投票:0回答:1

我需要编写与多个版本的ansible兼容的ansible代码。旧版本的 ansible 没有命名空间,而新版本有。在一个实例中,角色调用了“ansible.builtin.yum”模块,该模块在早期版本的 ansible 中失败。目前,删除前缀就足够了。命名空间行为记录在哪里?据推测,无前缀的模块名称是在名称空间列表中搜索的 - 该列表是什么?有命名空间设计文档吗?我能找到的最接近命名空间设计文档的是https://galaxy.ansible.com/docs/contributing/namespaces.html,它做出了无效的用例假设。

现在,删除“ansible.builtin”。从此类前缀模块的名称中可以看出,但我想了解何时停止使用较新版本的 ansible 的名称空间机制。

ansible namespaces
1个回答
0
投票

您得到的内容取决于配置。见

例如,如果您使用yum,将使用找到的第一个

shell> ansible-doc -t module -l | grep yum
ansible.builtin.yum
Manages packages with the ...
ansible.builtin.yum_repository
Add or re...
community.general.yum_versionlock
Locks / unlocks an installed package(s) from being updated b...

在标准 Ansible 安装中,安装的模块中只有一个 yum。因此doc说:

在大多数情况下,您可以使用短模块名称 yum

相同的规则将适用于您的自定义模块:

  • 如果您打算在项目中使用您的模块,只需将其放入 DEFAULT_MODULE_PATH

  • 如果您有更多自定义内容(角色、模块、过滤器、插件...),您可能需要创建一个集合

  • 如果您认为该模块可能对其他人有用,请贡献

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