Ansible community.vmware.vmware_guest_instant_clone报Folder not found问题咨询
问题根因与解决方法
核心错误原因
- 参数格式要求差异:
community.vmware.vmware_guest_instant_clone的folder参数要求传入相对于所属数据中心下vm目录的相对路径,不需要携带顶级前缀,这和community.vmware.vmware_vm_info返回的全路径格式完全不同,这是90%以上同类报错的诱因。 - 权限隐藏提示:你配置的vCenter操作账号如果对目标文件夹没有读取+创建虚拟机权限,vCenter会为了隐藏未授权资源路径,直接返回「Folder not found」错误,而非权限不足提示,容易误导排查方向。
- 大小写与路径格式错误:vCenter的文件夹路径大小写敏感,输入的路径如果和实际大小写不一致,或者携带了多余的前导斜杠,都会触发路径查找失败。
- 数据中心参数不匹配:如果playbook中没有单独指定
datacenter参数,或者指定的datacenter和目标文件夹归属的数据中心不一致,也会导致路径查找失败。
解决步骤
- 首先在playbook中单独配置
datacenter参数,值为目标文件夹归属的vCenter数据中心名称,不需要携带任何路径前缀。 - 裁剪
vmware_vm_info返回的全路径:去掉开头的/[数据中心名称]/vm/部分,剩余内容即为folder参数需要传入的值。示例如下:
vmware_vm_info返回全路径:
/dc01/vm/业务集群/测试业务组
裁剪后填入folder的参数值:业务集群/测试业务组
- 不要在folder参数的路径开头添加前导斜杠
/,严格匹配实际文件夹的大小写。 - 权限验证:使用和Ansible相同的vCenter账号登录vCenter控制台,确认可以在目标文件夹下手动创建虚拟机,排除权限问题。
正确配置示例
- name: 执行虚拟机即时克隆 community.vmware.vmware_guest_instant_clone: hostname: "{{ vcenter_hostname }}" username: "{{ vcenter_username }}" password: "{{ vcenter_password }}" validate_certs: false datacenter: "dc01" # 单独指定目标数据中心 folder: "业务集群/测试业务组" # 裁剪后的相对路径 name: "test-clone-001" parent_vm: "centos7-template" host: "esxi01.example.com" datastore: "ssd-datastore-01" delegate_to: localhost
内容的提问来源于stack exchange,提问作者Hrvoje Gjurić
相关产品推荐
相关产品推荐

