Given that state fetching is an idempotent operation, a transient
network error should not cause the entire build to fail. Instead,
retry when such errors are encountered.
Previously, any per instance metadata supplied via the GCE builder
was ignored.
Test plan:
- make test
- Manual testing via:
-- Created a packer config that contained a GCE builder with custom
metadata set.
-- Ran `packer build`.
-- Verified the instance had the correct metadata in the GCE console.
This is needed to make 'cdrom0' device unavailable during the ISO installation process.
It is required for some guest OS types, such as FreeBSD and OmniOS.
CD/DVD drive with installation ISO should be exactly the 2nd device in the VM boot order.
This ensures that VM will boot from this ISO at the first boot time only.
For each ISO image the individual cdrom device will be added to the VM. During the cleanup these devices will be deleted.
It makes attach steps more clear - there is no doubt what is the name of the device.
Related to: [mitchellh/packer#1502]
Remove the redundant StepRemoveDevices and rely on the cleanup to be handled by:
* StepAttachParallelsTools.Cleanup
* StepAttachFloppy.Cleanup
* stepAttachISO.Cleanup
We need to ensure the VMWare process has exited before attempting to run VMX file cleanup steps, otherwise VMWare may overwrite our changes. While Packer does its best to ensure VMWare has exited, there's still a race condition on some OSs between VMWare flushing the VMX and Packer updating it. The workaround is to artifically wait 5 seconds.
When using the VMX builder its possible for the source machine to have a floppy and/or CD-ROM mounted which gets cloned to the new VM Packer spins up, but have no Packer configuration for those devices. With this change we always attempt to remove the mounted devices regardless of the Packer configuration.
Once we have produced a qemu VM, we now have the option of using
the vagrant post-processor to create a .box file that can be used with
the vagrant-libvirt plugin.
This uses the new State method of the Artifact API to get necessary
information from the builder.
In order that something consuming an artifact can have access to extra
builder specific data add the State method which allows the caller to
ask for arbitary values by name.
Uses the Python API from Parallels Virtualization SDK to write
boot commands.
This eliminates a 3rd party requirement and makes it easier for people
not using homebrew to get started with packer.
Adds logic to ESXi driver VNC Address function to ignore listen
addresses that bind to localhost (127.0.0.1), this allows certain
default ports to be available on ESXi for VNC connections
When using the VMX builder its possible for the source machine to have a floppy configured which gets cloned to the new VM Packer spins up. When the new VM's Packer config doesn't have a floppy_files config entry, the Packer clean VMX step fails to remove the floppy disk from the new VM. This can cause build failures, for example with the vsphere post processor; generating errors like:
* Post-processor failed: Failed: exit status 1
Error: File (/home/teamcity/tmp/buildTmp/packer941120499) could not be found.
Opening the cloned VM's VMX file you can clearly see it has a floppy entry from the source machine's VMX file (exact same path) even though the Packer config contains no floppy_files entry.
Add configuration option to explicitly control where Packer uploads
ISO and floppy files to on ESXi hosts. The `remote_cache_datastore`
defaults to the `remote_datastore` value. The 'remote_cache_directory'
defaults to 'packer_cache', similar to the local caching capabilities.
Addresses issues with [GH-1218] and [GH-1221] where paths for uploaded
ISO and floppy files are not written to a valid location in the
datastore.
New config option:
reassign_mac (boolean) - If this is "false" the MAC address of the first
NIC will reused when imported else a new MAC address will be generated by
Parallels. Defaults to "false".
/cc @andytson - Wanted to CC you in here so you could see some changes I
made.
First, I changed commit to opt-in, so you set "commit": true to get
commit behavior. This simplifies the logic a bit. Then, I removed the
skipping for StepExport and StepCommit and put that into the Builder
itself. This simplifies those steps (limits abstraction leakage).
Otherwise, everything looks great!
"guest_os_distribution" become deprecated and is not required anymore.
But if it is defined (in outdated templates),then the value will be copied to "guest_os_type" and warning will be displayed.
Within GCE, images may be shared across projects. Prior to this
commit, there was no way to inform the GCE builder that a source
image belonged to a specific project. This adds an optional
'source_image_project_id' key to the GCE builder config.
Perhaps "region" is required when using a public provider like
Rackspace? It's not required for my private cloud from Metacloud. I
suspect a lot of private clouds have only a single region and thus don't
need "region" to be specified.
On CentOS7, ``pc-1.0'' qemu-kvm machine type are not supported.
Supported machines are:
none empty machine
pc RHEL 7.0.0 PC (i440FX + PIIX, 1996) (alias of pc-i440fx-rhel7.0.0)
pc-i440fx-rhel7.0.0 RHEL 7.0.0 PC (i440FX + PIIX, 1996) (default)
rhel6.5.0 RHEL 6.5.0 PC
rhel6.4.0 RHEL 6.4.0 PC
rhel6.3.0 RHEL 6.3.0 PC
rhel6.2.0 RHEL 6.2.0 PC
rhel6.1.0 RHEL 6.1.0 PC
rhel6.0.0 RHEL 6.0.0 PC
q35 RHEL-7.0.0 PC (Q35 + ICH9, 2009) (alias of pc-q35-rhel7.0.0)
pc-q35-rhel7.0.0 RHEL-7.0.0 PC (Q35 + ICH9, 2009)
* Using 'tcg' as accelerator for qemu-system allows packer to run in a
virtual machine as no kvm or xen support is needed.
* Also document the default behavior if no accelerator is given in the
documentation.
mount /dev/xvdf /mnt/point
while for an HVM image that is attached to /dev/sdf, its mount command is
mount /dev/xvdf1 /mnt/point
so this code enabled that
This reduces the number of simultaneous packer runs possible significantly, but unless you are Netflix, who have Aminator anyway, this is probably never going to be an issue
This commit fixes errors like this in the vsphere post-processor when using floppy files in the builder step:
Error: File (/var/folders/zl/57c1vmr532z_ryf1scw53_b9ycmxh7/T/packer964492999) could not be found
The configure VMX step re-adds the floppy files, so we need to configure the VMX and _then_ clean the VMX in that order.
Also fixed the error message to be clear that the image was not found in any of
the projects that we attempted to search, rather than keep the error message
from the last project, which may be confusing to users.
before, this code had joining path elements by filepath module. filepath module generate path string with backslash-joined in Windows. but ESX require path string with slash-joined. it means that this code generate illegal path string in windows. illegal path string raised "Error creating disk".
this patch fixes path separator from backslash to slash in windows. from this, creating disk would succeed without error.
[gophercloud#168](https://github.com/rackspace/gophercloud/issues/168) has been
patched to not panic on non-existing server id's. If an error is returned,
check if the error is a 404 first before bailing.
With go tip, the output from Artifact.String will sometimes be output in a
different order than the tests. Sort the AMI strings before outputting.
See https://travis-ci.org/mitchellh/packer/jobs/28748467 for an example of this
failure.
gophercloud.ServerById is broken in v0.1.0 - it will crash if you feed it a
non-existing server ID (see [rackspace/gophercloud #168](https://github.com/rackspace/gophercloud/issues/168))
Instead, list all servers and iterate over them. If the server id isn't found,
return "DELETED" as a state. Not perfect but it works until next version of
gophercloud is released.
googlecompute: It looks like you are trying to run "/usr/local/bin/../share/google/google-cloud-sdk/bin/bootstrapping/gsutil.py update".
googlecompute: The "update" command is no longer needed with the Cloud SDK.
googlecompute: To update, run: gcloud components update
Add configuration option `networks`, a list of network UUIDs, to attach to the
source instance.
In some openstack installs, no default network will be attached or the network
with the ability to attach a public floating IP will need to be specified.
Rackspace defaults to a public IPv4 and IPv6 address. These are returned in
random order, with the sprintf further on generating an incorrect connection
string if on IPv6. Force IPv4 until support for correct connection strings and
a configuration flag for logging in over IPv6 is added.
According to be5adb92b5, the UploadDir
method supports two ways of copying depending on whether a trailing
slash is used:
src = "dir" -> dest/dir
src = "dir/" -> dest
On BSD-based systems (such as OSX, FreeBSD, etc.) the `cp -R` command
handles these two cases automatically. However, Linux treats "src/" and
"src" the same.
To support the trailing slash syntax portably, we can use:
src = "dir" -> dest/dir
src = "dir/." -> dest
This works on BSD and Linux. It is better than using wildcards as it
grabs hidden files as well.
This fixes#1196 that prevents the chef-solo provisioner from working
with the chroot builder.