[CentOS-devel] Fwd: Vagrant boxes (7.2.1511)

Tue Dec 13 23:54:02 UTC 2016
Laurentiu Pancescu <lpancescu at gmail.com>

Hi,

I'm a member of the Cloud Instance SIG, involved in the development of 
the Vagrant images (I'm a CentOS contributor, not part of the Core 
Team). [1]

On 13/12/16 18:16, Carlos Rodrigues wrote:
> Now that CentOS 7.3 has been released, vagrant boxes have become
> broken when the vagrant-vbguest plugin is used to build guest
> additions at creation time due to the "kernel-devel" package matching
> the running kernel not being available in the default repos anymore
> (since the base repo is not cumulative with older point releases).

I know.  I planned to have new Vagrant images, based on CentOS Linux 
7.1611, available simultaneously with the main release.  In the past 
weeks, I had already tested updating the v1610 centos/7 image with the 
packages from the CR repository, without seeing any problems.  I started 
test builds on Monday morning, as soon as the repos were switched, but 
they failed: our image builders, running CentOS 6.8, were unable to 
parse the XFS filesystem generated by a fresh 7.1611 installation (this 
worked without issues upto 7.1511, the previous version).  We hope to 
solve this in the following days - many thanks to Fabian and Thomas for 
their help.

Part of the problem is caused by the fact that vbguest tries to install 
the VirtualBox Guest Additions *before* performing a system update.  As 
you pointed out, this doesn't work over point releases such as this one 
due to kernel-devel and kernel-headers being unavailable; it also has 
the disadvantage of wasting time by having the box compile the Guest 
Additions twice - once during the initial "vagrant up", and then during 
the kernel upgrade.  My own starter kit avoids this problem by updating 
the system first and then installing the VirtualBox Guest Additions, 
leaving you with a ready-to-use 7.1611 system after "vagrant up", even 
when starting with a 7.1511-based v1610 box. [2]  It requires Ansible on 
the host, and you might have to try "IDE" or "IDE controller" in the 
Vagrantfile when attaching the ISO, if VirtualBox complains about not 
finding it.

> Using vagrant is especially useful when you want reproducible
> environments, and this includes pinning the base box to a particular
> version. As it stands, new CentOS point releases permanently break
> this usecase and I believe it would be important to have a solution
> for this.

As far as I understand, we can only support the current version of 
CentOS Linux (right now, 7.1611) - not any previous releases.  The only 
solution I can think of would be to provide the packages required to 
build the VirtualBox Guest Additions as part of the image, so that it 
becomes self-sufficient.

However, this would increase the size of the box by around 180MB just 
for console support (to support X11, we'd need even more space for the 
X11 development packages, Mesa and some others).  Considering that 
networking works fine without the Guest Additions, and the availability 
of SMB, NFS and sshfs for shared folders, not to mention that VirtualBox 
shared folders are slow, prone to data corruption in combination with 
sendfile and occasionally 'forgetting' to update some files between the 
host and the guest, I feel inclined to keep the package selection as it 
is now.

Best regards,
Laurențiu

[1] https://wiki.centos.org/SpecialInterestGroup/CloudInstance
[2] https://github.com/lpancescu/cloud-instance-starter-kit