I'm having trouble creating a synced folder using kitchen. Seems like something is wrong with the latest version of Virtualbox Guest Additions (2.3.8)
After running:
$ kitchen converge
I get this:
Downloading VirtualBox Guest Additions ISO from http://download.virtualbox.org/virtualbox/4.3.28/VBoxGuestAdditions_4.3.28.iso
Copy iso file /home/rocker/.vagrant.d/tmp/VBoxGuestAdditions_4.3.28.iso into the box /tmp/VBoxGuestAdditions.iso
mount: /dev/loop0 is write-protected, mounting read-only
Installing Virtualbox Guest Additions 4.3.28 - guest version is 4.3.20
Verifying archive integrity... All good.
Uncompressing VirtualBox 4.3.28 Guest Additions for Linux............
VirtualBox Guest Additions installer
Removing installed version 4.3.20 of VirtualBox Guest Additions...
Copying additional installer modules ...
Installing additional modules ...
Removing existing VirtualBox non-DKMS kernel modules[ OK ]
Building the VirtualBox Guest Additions kernel modules
Building the main Guest Additions module[FAILED]
(Look at /var/log/vboxadd-install.log to find out what went wrong)
Doing non-kernel setup of the Guest Additions[ OK ]
Installing the Window System drivers
Could not find the X.Org or XFree86 Window System, skipping.
An error occurred during installation of VirtualBox Guest Additions 4.3.28. Some functionality may not work as intended.
In most cases it is OK that the "Window System drivers" installation failed.
Cleaning up downloaded VirtualBox Guest Additions ISO...
Restarting VM to apply changes...
==> default: Attempting graceful shutdown of VM...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
default: Warning: Connection timeout. Retrying...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Setting hostname...
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
default: /home/vagrant/sync => /home/rocker/environments/chef-repo/mediacenter/data
STDERR: Failed to mount folders in Linux guest. This is usually because
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:
mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` home_vagrant_sync /home/vagrant/sync
mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` home_vagrant_sync /home/vagrant/sync
Here is my .kitchen.yml
---
driver:
name: vagrant
synced_folders:
- ["data", "/home/vagrant/sync"]
provisioner:
name: chef_solo
cookbooks_path: "/home/rocker/environments/chef-repo/cookbooks"
platforms:
- name: cento7
driver:
box: centos7
box_url: http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_centos-7.0_chef-provisionerless.box
network:
- ["private_network", {ip: "192.168.38.34"}]
customize:
memory: 1536
suites:
- name: server
run_list:
- recipe[chef-server::default]
attributes:
If I remove this part:
synced_folders:
- ["data", "/home/vagrant/sync"]
the VirtualBox Guest Additions still fails, but it doesn't stop the converge processes.
Same thing happens if I use the learningchef centos 6.5 image box:
box: learningchef/centos65
box_url: learningchef/centos65
I've done some research online and it seems to solve the problem for a lot of people that use:
$ vagrant plugin install vagrant-vbguest
So installing the Vagrant Virtualbox guest plugin. Can I somehow plug it in the test kitchen lifecycle and not do this step by hand?
EDIT: Also, the generated Vagrantfile looks like this:
Vagrant.configure("2") do |c|
c.berkshelf.enabled = false if Vagrant.has_plugin?("vagrant-berkshelf")
c.vm.box = "centos7"
c.vm.box_url = "http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_centos-7.0_chef-provisionerless.box"
c.vm.hostname = "server-cento7"
c.vm.network(:private_network, {:ip=>"192.168.38.34"})
c.vm.synced_folder ".", "/vagrant", disabled: true
c.vm.synced_folder "/home/rocker/environments/chef-repo/mediacenter/data", "/home/vagrant/sync", nil
c.vm.provider :virtualbox do |p|
p.customize ["modifyvm", :id, "--memory", "1536"]
end
end
Any advice is much appreciated.