Ansible vmware_vm_inventory清单插件获取首个连接网络名的正确写法
问题原因
vmware_vm_inventory 插件的 properties 配置项仅支持传入 vSphere API 返回的原生属性名,不支持直接通过数组下标、多级点索引语法直接提取数组内的嵌套字段,你尝试填写的 guest.net.0.network、guest.net[0].network 均不符合该参数的格式要求,因此配置校验失败直接返回帮助信息。
正确配置方法
不需要修改 properties 中的 guest.net 配置,通过插件自带的 keyed_groups 或 compose 配置项就可以实现首个网卡网络名的提取、分组需求:
- 保留
properties中的guest.net配置,拉取完整的网卡数组属性 - 新增分组/变量提取规则,直接通过Jinja2语法访问首个网卡的
network字段
完整配置示例
plugin: vmware_vm_inventory strict: False hostname: 10.10.10.1 username: user password: password validate_certs: False with_tags: False hostnames: - config.name properties: - 'config.name' - 'config.guestId' - 'guest.ipAddress' - 'guest.net' - 'summary.runtime.powerState' # 新增:基于首个网卡网络名自动分组 keyed_groups: - prefix: vm_net key: guest.net[0].network # 可选:把首个网络名单独提取为顶级主机变量 compose: first_nic_network: guest.net[0].network
配置完成后执行ansible-inventory --list即可看到所有主机会按照首个网卡的网络名自动分到vm_net_<网络名>的分组下,也可以通过first_nic_network变量直接调用首个网卡的网络名。
内容的提问来源于stack exchange,提问作者Oliver Gaida
相关产品推荐
相关产品推荐

