joefitzgerald / packer-windows

Windows Packer Templates
MIT License
1.63k stars 1.12k forks source link

Creating vmx file to deploy onto vSphere #27

Closed kief closed 10 years ago

kief commented 10 years ago

Hi, I'm quite happy to be able to use packer to build Windows images thanks to this project. I want to deploy VMs (actually, VM templates are my end goal) onto a vSphere instance, but haven't managed it yet.

I have modified the packer configuration, adding '"keep_input_artifact": true' to the vagrant builder, and tried running ovftool on the .vmx file that gets created in the output directory.

But ovftool fails because it has a path to floppy0, which doesn't exist.

Error message:

Error: File (/var/folders/zl/57c1vmr532z_ryf1scw53_b9ycmxh7/T/packer964492999) could not be found.

From the .vmx file:

floppy0.filename = "/var/folders/zl/57c1vmr532z_ryf1scw53_b9ycmxh7/T/packer964492999"
floppy0.filetype = "file"
floppy0.present = "TRUE"

So I'm not sure if there's a way to generate the .vmx file without the floppy drive - presumably, once the OS has been installed and we don't need the Autounattend.xml file anymore, it can be detached.

Is there a change needed to the config file to make this work, or something else I could do? I could post-process the .vmx file to disable the drive, but it feels like a hack. Either I'm doing something wrong, or there's an improvement to be made somewhere.

Thanks, Kief

sneal commented 10 years ago

I haven't tried pushing templates to vSphere from Packer yet. I've only run Packer to create the VM then manually run the ovftool. I wanted to ensure the ovftool was going to work before trying it through Packer. I'm not sure what the difference is, but I run sysprep on shutdown and then run ovftool after the box has powered off.

kief commented 10 years ago

I'm not trying to push them from packer, I'm trying to use ovftool to manually push the intermediate .vmx file created by packer. This .vmx is configured to mount the floppy, which isn't available when I check the file with ovftool.

What file are you pushing with ovftool, are you extracting it from the .box file?

sneal commented 10 years ago

This is the command line I used:

ovftool --noSSLVerify=true --acceptAllEulas --name=patched-sso-test --datastore=esx_data1_dev --network=VLAN\ 103 ./output-vmware/packer-vmware.vmx vi://sneal:secret@sea-vcenter.hq.daptiv.com/Daptiv\ HQ/host/IT/Resources/Packer
joefitzgerald commented 10 years ago

@kief Did you figure this out, or is this still an issue?

kief commented 10 years ago

@joefitzgerald I ended up writing a wrapper script to run packer and then strip out the floppy configuration. This is the last bit:

for vmx in output-"${PACKER_BUILD}"/*.vmx ; do
  echo "Removing the setup floppy from the vmware image $vmx"
  perl -pi -e 's/floppy0.present = "TRUE"/floppy0.present = "FALSE"/' "${vmx}"
done
joefitzgerald commented 10 years ago

@kief It sounds like the ultimate fix here is for Packer to have a new provisioner (vmware-ovf / vmware-vsphere?): https://github.com/mitchellh/packer/pull/582

Are you using the vSphere post-processor (https://github.com/mitchellh/packer/pull/613 / http://www.packer.io/docs/post-processors/vsphere.html)? If so, I think this deserves a Packer issue and an associated pull request... what are your thoughts?

kief commented 10 years ago

On Wed, Feb 26, 2014 at 6:25 AM, Joe Fitzgerald notifications@github.comwrote:

@kief https://github.com/kief It sounds like the ultimate fix here is for Packer to have a new provisioner (vmware-ovf / vmware-vsphere?): mitchellh/packer#582 https://github.com/mitchellh/packer/pull/582

Are you using the vSphere post-processor (mitchellh/packer#613https://github.com/mitchellh/packer/pull/613/ http://www.packer.io/docs/post-processors/vsphere.html)? If so, I think this deserves a Packer issue and an associated pull request... what are your thoughts?

I'd see it as a post-processor rather than a provisioner of its own. The actual provisioning would be exactly the same, wouldn't it? It's just that in some cases, you want to package it up into an ovf, and/or push it up to vSphere.

I'd kind of like to be able to fire up the template locally and run tests on it (e.g. serverspec) before pushing it up to vSphere. I also might want to use it as an input to build other templates, e.g. have a base template, then create a few other templates with more specific things on them (nginx, database, etc.)

K

joefitzgerald commented 10 years ago

@kief So what are the actions to come from this? I'd like to get specific about next steps. If there are none, perhaps we should consider closing the issue?

joefitzgerald commented 10 years ago

Happy to reopen if we identify next steps.

bigmyx commented 8 years ago

had the same issue. it worked after adding ovftool post-processor before vsphere.