Checking if a volume exists before attempting to create it results in
a "time of check to time of use" race. When the check is done the
volume doesn't exist but then, because it is shared storage, it is
then created by another node before the local attempt to create it.
This results in an unexpected failure.
It is better to simply attempt to create the volume and ignore EEXIST
in cases where this is permissible.
Implementing this properly is complicated by the fact that the
exception appears to contain only an error message and does not appear
to contain a useful error code. Digging through the layers in, for
example, fog-libvirt provides no evidence why this is so. However,
the error message seems fairly unique and matching it is easy, so just
do that. A small hack to vastly improve stability.
Signed-off-by: Martin Schwenke <martin@meltin.net>
Support `vagrant package` of e.g. bento-derived boxes that require SSH
hostkeys already set (as in the case of bento/debian-7 and above,) as
well as leave existing LVM UUIDs untouched (e.g. in bento/ubuntu-18.04.)
Instead of hard-coding sysprep operations, use an environment variable
to set these instead.
Use the Chef bento use case as an example for customizing sysprep
operations.
Attempt to use latest travis CI settings for installing required
packages.
Should attempt to test various combinations to try and catch problems
occurring across different versions of vagrant with different versions
of ruby when people are using distro provided versions.
the 'echo' service is often not available out-of-the-box,
so the 'ping' of the ssh interface fails. This results in the
wrong ip addresses being used in /etc/exports, which results in
the vm not being able to mount the vagrant shares.
The 'vagrant ssh interface' will have the service 'ssh' available
(you won't be able to login to your vagrant box else), so it makes
sense to use that service for the ping.
This fixes the vm not being able to mount the shares over nfs after
a reload due to the wrong ip addresses being used.
* readme: usb: keep usb-related sections together
* readme: usb: add link for usb device passthrough section
* readme: usb: add general info about usb usage
* readme: usb: place libvirt doco link after vagrantfile example
* readme: usb: add note about enabling spice redirection
Current install instructions for Debian/Ubuntu install the package
"dnsmasq", which results in dnsmasq being immediately started and
configured to run as a system service. This is probably not something
vagrant-libvirt users typically want.
Instead, package "dnsmasq-base" exists, which achieves precisely what is
probably desired here.
Make the unit test match the new requirement that if a _ postfix is desired
when default_prefix is defined, then it must be added to the default_prefix.
Forcing an underscore between a defined default_prefix and the machine name
forces a naming format that the user might not want.
If they define their own default_prefix and want an underscore between that and
the machine name, they can/should add the underscore to the default_prefix.
For Darwin operating systems, `cmd` is not a valid keyword, thus
resulting in the following error when executing Vagrant `reload` and
`destroy` commands:
ps: cmd: keyword not found
ps: no valid keywords; valid keywords:
This commit ensures that SSH sessions for forwarded ports are
terminated via their respective process ID for Darwin *and* Linux
operating systems.
Both Darwin and Linux operating systems support the `command` keyword,
as reflected in the following documents, respectively:
- https://apple.co/2H7jFwl
- https://bit.ly/2HakfW0