使用Ansible的vmware_guest模块创建Windows Server虚拟机时disk参数不生效问题
问题根因
vmware_guest模块针对Linux和Windows虚拟机的克隆后磁盘处理逻辑不同:Linux场景下vCenter调整磁盘硬件大小后系统可自动识别挂载,Windows场景下默认客制化流程不会自动调整分区大小,且缺少明确的磁盘匹配参数时模块会跳过模板原有磁盘的大小调整。- 你当前的配置缺少两个Windows场景必须的参数:磁盘的唯一匹配标识、客制化阶段的磁盘扩容开关。
修复方案
1. 修正disk参数配置
明确指定要调整的是模板自带的第一块系统盘,避免模块无法匹配磁盘而跳过配置:
disk: - size_gb: "{{ disk_size | default('16') }}" type: "{{ vm_disk_type | default('thin') }}" datastore: "{{ vm_datastore }}" disk_number: 0 scsi_controller: 0
2. 新增客制化扩容参数
在customization配置块添加extend_disk: yes,开启Windows客制化阶段的自动分区扩容能力:
customization: dns_servers: - "{{ dns_server1 }}" extend_disk: yes
注:extend_disk参数需要community.vmware集合版本≥1.0.0,低版本Ansible需先升级对应集合
3. 模板前置检查
操作前确认Windows模板满足以下条件:
- 已安装最新版VMware Tools
- 系统盘未开启BitLocker加密
- 系统分区为NTFS格式,无额外分区限制
兜底方案
如果上述配置仍不生效,可拆分任务两步执行:
- 先克隆虚拟机并调整磁盘硬件大小,不执行客制化、不启动虚拟机
- 启动虚拟机后通过WinRM连接执行PowerShell命令扩容分区:
$partition = Get-Partition -DriveLetter C Resize-Partition -DriveLetter C -Size ($partition | Get-PartitionSupportedSize).SizeMax
内容的提问来源于stack exchange,提问作者G16
相关产品推荐
相关产品推荐

