vmware_datastore_info模块无法采集数据存储信息返回空数组问题
问题现象
使用Ansible的community.vmware.vmware_datastore_info模块采集VMware vCenter指定数据存储信息时,任务执行状态显示成功,但返回的datastores字段为空数组,和模块文档描述的返回规则不符,相同任务配置此前可以正常获取包含容量、可用空间等属性的完整数据。
复现代码
- name: Gather info from datacenter about specific datastore community.vmware.vmware_datastore_info: hostname: '{{ vcenter_hostname }}' username: '{{ username }}' password: '{{ password }}' datacenter_name: '{{ datacenter_name }}' name: ENV04 validate_certs: False delegate_to: localhost register: info - debug: msg: "{{ info }}"
实际返回输出
TASK [Gather info from datacenter about specific datastore] ************************************************************************************************************ ok: [172.17.92.2 -> localhost] TASK [debug] *********************************************************************************************************************************************************** ok: [172.17.92.2] => { "msg": { "changed": false, "datastores": [], "failed": false } }
文档预期返回规则
根据模块官方文档说明,datastores字段始终会返回匹配范围内可用数据存储的元数据,示例返回包含accessible、capacity、freeSpace等核心属性,参考如下:
RETURN VALUES: - datastores metadata about the available datastores returned: always sample: - accessible: true capacity: 5497558138880 datastore_cluster: datacluster0 freeSpace: 4279000641536 maintenanceMode: normal multipleHostAccess: true name: datastore3 nfs_path: /vol/datastore3 nfs_server: nfs_server1 provisioned: 1708109410304 type: NFS uncommitted: 489551912960 url: ds:///vmfs/volumes/420b3e73-67070776/
排查解决步骤
按优先级依次排查以下问题即可定位根因:
- 名称匹配校验:模块的
name参数为大小写敏感的精确匹配规则,首先确认填写的ENV04和vCenter内数据存储的实际名称完全一致,重点排查是否存在前后缀空格、大小写偏差、形似字符混淆(比如数字0和字母O)。最稳妥的验证方式是临时移除任务中的name参数,拉取指定数据中心下所有数据存储的列表,从返回结果中核对目标存储的真实名称后再填回参数。 - 账号权限校验:确认当前使用的vCenter服务账号近期是否做过权限调整。该模块存在已知的静默失败逻辑:如果账号对目标数据存储没有只读浏览权限,不会直接抛出权限类报错,只会返回空数组。可以直接用该账号登录vSphere Client,手动验证是否能看到ENV04数据存储、是否能查看它的容量等基础信息。
- 集合版本bug修复:检查本地安装的
community.vmware集合版本,1.x系列的部分中间版本存在过滤逻辑缺陷:当目标数据存储归属于某个数据存储集群时,同时传入datacenter_name和name参数会出现匹配失效,直接返回空结果。执行命令ansible-galaxy collection install community.vmware --upgrade升级到最新稳定版即可修复这类问题。 - 参数适配调整:如果使用的是较新版本的
community.vmware集合,当目标数据存储属于数据存储集群时,建议额外增加datastore_cluster_name参数指定所属存储集群,不要仅靠数据中心范围做过滤,避免跨层级遍历导致匹配失效。 - 链路连通性校验:确认执行Ansible任务的主机到vCenter的443端口通信没有被中间防火墙、代理设备拦截。存在部分API请求被拦截的场景时,模块不会直接抛出连接错误,只会返回空结果集。
内容的提问来源于stack exchange,提问作者pugazhendhi_r
相关产品推荐
相关产品推荐

