You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible Constructed插件动态库存问题:目录无法自动加载配置

问题解析与解决方法

问题现象

使用Ansible Constructed插件生成动态组bases时,仅指定包含传统库存文件和Constructed配置文件的目录(ansible-playbook -i inventory task/test.yml)无法生效,proxmox-01未被加入bases组;但同时显式指定两个文件(ansible-playbook -i inventory/inventory.yml -i inventory/constructed.yml task/test.yml)时,bases组正常生成。已在ansible.cfg中启用ini和constructed插件。

相关配置

  • 传统库存文件(inventory/inventory.yml):
[star_wars]

[star_wars:children]
customer
proxmox

[customer:children]
luke_skywalker

[luke_skywalker]
proxmox-01

[proxmox]
  • Constructed插件配置文件(inventory/constructed.yml):
---
plugin: constructed
strict: true

groups:
  bases: "'proxmox' in group_names"

原因分析

Ansible加载目录作为库存时,默认只会自动识别特定规则的文件,Constructed作为动态库存插件,其配置文件需要被明确标记为动态库存源,仅放在目录中无法被自动加载,除非满足特定识别条件。

解决方法

方法1:用目录内的inventory.cfg统一管理库存源

在inventory目录下创建inventory.cfg文件,内容如下:

[inventory]
sources =
  ./inventory.yml
  ./constructed.yml

之后执行命令只需指定目录:

ansible-playbook -i inventory task/test.yml

方法2:修改Constructed配置文件命名

将constructed.yml重命名为constructed.inventory.yml,Ansible会自动识别该文件为动态库存插件配置,之后直接指定目录即可生效:

ansible-playbook -i inventory task/test.yml

方法3:在ansible.cfg中指定默认库存源

如果需要全局生效,在ansible.cfg的[defaults]段添加:

inventory = ./inventory/inventory.yml,./inventory/constructed.yml

之后执行命令无需指定-i参数:

ansible-playbook task/test.yml

验证方法

执行以下命令查看库存组信息,确认proxmox-01是否在bases组中:

ansible-inventory -i inventory --list | grep -A5 "bases"

内容的提问来源于stack exchange,提问作者steven ML

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 22:07:01