This PR sets the active hostname back to the name specified in the Vagrantfile (fqdn) and updates the unit tests.
Setting it to the short name causes loads of problems while configuring the system. I've had issues with sudoers hostname matching, Weblogic certificate generation and a few others. Even if I changed all of the Chef recipes, the fqdn is set in /etc/sysconfig/network so the active hostname will switch to the fqdn after a reboot.
When `/etc/hosts` contained a FQDN with a trailing dot, the `\b` in the
sed expression would not match, since dot is not considered to be a word
character.
Fix this by regexp-escaping the hostname search, and matching the end of
the line on optional space followed by additional characters.
Also add some tests that extract the regexp used by sed and verify that
it does what we want. These will hopefully serve us in the future if we
ever need to test additional edge cases.
there's been a lot of churn around this code, so i figure it was worth
trying to clean it up.
- the methods were doing a lot, so make them into template methods with
one helper per step
- spread out /etc/hosts regexp into a couple of helper variables for
clarity
- remove handling for broken hostname implementations (like basing all
of the checks on name.split('.')[0]), since it seems reasonable to
remove code dedicated only to handling broken boxes
- DRY up the shared code between debian/ubuntu implementations, which
clarifies the differences as well
- add unit tests around the behavior; this will help us in the future
to separate flaws in our understanding from flaws in implementation
- includes a new DummyCommunicator in tests which should be useful in
supporting additional unit testing of this kind
- manually tested this on squeeze, wheezy, precise, quantal, raring,
and saucy successfully.
handles the issue in #2333
The default shell is "bash -l" which does not get installed by default
on FreeBSD. This change allows the plugin to override the default shell
and use a known installed shell (sh).
The issue was that the old method simply didn't work. When the hosts
file should look like:
127.0.1.1 host.fqdn.com host
It looked like:
127.0.1.1 host.fqdn.com host old.fqdn.com old
Or this if the user didn't set a fqdn
127.0.1.1 host host old.fqdn.com old
This patch fixes that.
- It's not clear whether it's possible to mount individual shares
using 'mount -t vmhgfs', as the vagrant-vmware-fusion provider now does
for Linux guests. Any mount from '.host', even if not a valid share
name, succeeds and mounts _all_ shares in their respective directories
at the root of the mountpoint. Instead, we symlink each directory from
its place in '/Volumes/VMware Shared Folders'
bunch of retires rather than a long sleep.
Add DarwinNFSMountFailed error. This might move be more appropriate at
the plugin level.
Integrate some of tvsutton's work in configure_networks to get the
implementation closer to working in both fusion and virtualbox.
Add shell_expand_guest_path capability (also copied from linux)
- There's a lengthy sleep in there, probably could use a back-off loop
- en1 seems totally worthless on vbox, I skip it and just use the en2 it creates.
On Debian and Ubuntu guests, when the new hostname of the guest box is
set, the DHCP client (isc-dhcp-client) won't renew its DHCP lease with
the new hostname. Executing "ifdown -a; ifup -a" to reinitialize all auto
interfaces fixes this issue.
Furthermore, as vagrant will now actually wait until a DHCP lease is
acquired, it is guaranteed that the the correct domainname is set from
DHCP before calling other provisioners like puppet, that rely on it.
This fixes puppet/facter sometimes failing to find the fqdn fact on an
LXC guest when the DHCP server is responding too slow.
- Tested on mountainlion/virtualbox
- virtualbox shared folders will not work (no vboxvsf support)
- Must use at least 2GB of RAM or the os will refuse to boot(mountainlion requirement)
To begin, create a mountainlion vm in virtualbox. You will need to install from scratch most likely, and assign at least 2GB of ram for it to install.
Create 2 network interfaces, the first one a NAT interface, second a hostonly interface.
'vagrant package' the VM.
In your vagrant file, be sure that the synced folder is disabled:
config.vm.synced_folder "vagrant", "/vagrant", disabled: true