May 28, 2018
Experiments with Packer and Vagrant on CentOS
—A look at Vagrant and Packer (CentOS).
In
Experiments with Packer and Vagrant on Debian I discussed my experience with
Pierre Mavro's packer-debian project. Here I discuss my experience with
Packer and
Vagrant on
CentOS.
My exploration of CentOS relies on work done by
Gavin Burris. I extended Gavin's work to include CentOS 7.2. Using Gavin's example, I was able to bring up a Vagrant box using Virtual Box on CentOS 7.2-1511 in a matter of minutes.
One problem I encountered in my test environment took a while to solve. I executed:
> packer version
> Packer v0.10.1
> packer build centos7.json
dd returns a non-zero return code with these commands:
> sudo dd if=/dev/zero of=/boot/zero bs=1M
> sudo rm -f /boot/zero
> sudo dd if=/dev/zero of=/zero bs=1M
> sudo rm -f /zero
Packer reports the following errors:
> virtualbox-iso: dd: error writing ‘/boot/zero’: No space left on device
> virtualbox-iso: 397+0 records invirtualbox-iso: 396+0 records out
> virtualbox-iso: 415494144 bytes (415 MB) copied, 1.05651 s, 393 MB/s
> ==> virtualbox-iso: Unregistering and deleting virtual machine...
> ==> virtualbox-iso: Deleting output directory...
> Build 'virtualbox-iso' errored: Script exited with non-zero exit status: 1
Ouch. Packer reasonably deletes what it believes to be a broken Virtual Box.
To correct this, replace the dd commands above with the following:
> sudo dd if=/dev/zero of=/boot/zero bs=1M || sudo rm -f /boot/zero
> sudo dd if=/dev/zero of=/zero bs=1M || sudo rm -f /zero
Problem solved!
The problem is that dd has to fill the device which means it must exit with a non-zero return code.
While interesting, I ended up removing the dd commands altogether. My modifications to
centos7.json.