diff --git a/builder/vmware/common/driver_esx5.go b/builder/vmware/common/driver_esx5.go index 4b083e5ff..b82aac7b2 100644 --- a/builder/vmware/common/driver_esx5.go +++ b/builder/vmware/common/driver_esx5.go @@ -68,7 +68,7 @@ func (d *ESX5Driver) Clone(dst, src string, linked bool) error { return fmt.Errorf("Failed to copy the vmx file %s: %s", srcVmx, err) } - filesToClone, err := d.run(nil, "find", strconv.Quote(srcDir), "! -name '*.vmdk' ! -name '*.vmx' -type f ! -size 0") + filesToClone, err := d.run(nil, "find", strconv.Quote(srcDir), "! -name '*.vmdk' ! -name '*.vmx' ! -name '*.vmxf' -type f ! -size 0") if err != nil { return fmt.Errorf("Failed to get the file list to copy: %s", err) } diff --git a/builder/vmware/common/step_configure_vmx.go b/builder/vmware/common/step_configure_vmx.go index a4ebd7ae6..702f0e0e6 100644 --- a/builder/vmware/common/step_configure_vmx.go +++ b/builder/vmware/common/step_configure_vmx.go @@ -102,6 +102,17 @@ func (s *StepConfigureVMX) Run(_ context.Context, state multistep.StateBag) mult } } + // Set the extendedConfigFile setting for the .vmxf filename to the VMName + // if displayName is not set. This is needed so that when VMWare creates + // the .vmxf file it matches the displayName if it is set. When just using + // the sisplayName if it was empty VMWare would make a file named ".vmxf". + // The ".vmxf" file would not get deleted when the VM got deleted. + if s.DisplayName != "" { + vmxData["extendedconfigfile"] = fmt.Sprintf("%s.vmxf", s.DisplayName) + } else { + vmxData["extendedconfigfile"] = fmt.Sprintf("%s.vmxf", s.VMName) + } + err = WriteVMX(vmxPath, vmxData) if err != nil {