Folks,

I'm following up on the action item from this week's VPP Weekly meeting (http://ircbot.wl.linuxfoundation.org/meetings/fdio-vpp/2016/fdio-vpp.2016-12-13-16.01.html) to start a discussion on maintaining, standardizing, and generating the linux host images for VPP projects. As noted on the call, the different VPP project run-time environments are in the process of diverging and in some cases decaying to the point that the recipes for project development documented on wiki.fd.io are non-functional.

The current permutations of Vagrant, VIRL, bare metal, container crossed with OS/CPU variants for the execution environments required for building and testing all of VPP projects has become unmanageable. This is due to the lack of standardization and automation used to bootstrap the original VPP Continuous Integration infrastructure during the FDIO launch. The logical solution to this problem is to automate the creation of linux host images, to standardize the contents of the base image contents, then add additional OS packages as required meet individual project needs. Packer is currently being used in both CI-MANAGEMENT and CSIT for this purpose, therefore it makes sense to standardize on packer as the image building tool to build a continuous delivery system for linux host OS images across all fd.io projects.

The ci-management project is in the process of converting from vagrant box images to building packer defined cloud vm (openstack) images for fd.io worker VM's (Ubuntu 14.04, Ubuntu 16.04, and Centos 7). This uses an openstack builder on the linux foundation's cloud provider, base distro images uploaded by LF into openstack, provisioner scripts to customize the distro variants to produce an openstack image containing the required fd.io packages.

[ @Vanessa, is there a write-up of the requirements being met for the packer conversion? How/when are the base images created? What is the process for upgrading these images to reduce the overhead of updating the OS up to its current version over time (eg. baseimage == ubuntu 16.04.x instead of the original release)? How often are new OS images going to be generated? ]

CSIT has utilized a set of disk image builder scripts + packer to build the VIRL images used for CSIT functional tests. Unfortunately the building/deployment of the VIRL images requires manual running of the scripts and installation on the VIRL servers in the LF lab. There is one critical difference in how CSIT utilizes packer to build the images -- all package versions are saved into an image contents specification file which allows the replication of the EXACT host OS configuration. This is in contrast to continually downloading the latest package set published by each distro. The intention was to fully automate the generation/distribution/installation of the CSIT VIRL images (on a periodic basis), but this has not come to fruition yet due to resource constraints. I would advocate that this requirement (reproducibility of the exact OS configuration) be incorporated for all fd.io projects and that we synchronize periodic updates to OS contents across all fd.io projects.

Someone on Tuesday's call mentioned that the puppet-fdio project was contemplating using packer, however, I have been unable to find any documentation on the wiki nor see anything in the repo related to building images.

[ @Feng, is there any documentation on the scope/requirements for the puppet-fdio project? ]

VPP & CSIT development environments as documented on both project's wiki pages utilize the VPP vagrant infrastructure (.../vpp/build-root/vagrant). This currently is still firing up ubuntu 14.04 utilizing a generic (i.e. non fd.io configuration) Vagrant box on the Hashicorp Atlas server. The Vagrantfile also support a number of virtual machine environments, some of which I expect have not been utilized for enough time to be broken.

In the short term, VPP Vagrantfile needs to be upgraded to a ubuntu 16.04 box, VPP "make test" and CSIT functional test development environment validated on all major host OS variants (Ubuntu 16.04/16.10, Centos 7.2/3, Windows 10), and the VPP/CSIT how-to-develop wiki pages validated/updated. IMHO, this is the highest priority issue and I am currently working on the ubuntu variants on virtualbox.

The development of host OS images should be incorporated into a single project -- puppet-fdio or ci-management being the most logical choices IMO. I recommend that the requirements for project be specified on the wiki. I'm willing to volunteer to create the 1st draft once the appropriate project is determined. Additionally each project should identify a resource to specify and verify the specific OS images in use by the project team. I'll add a table to the requirements to track this once we have the draft published on the wiki.

Subsequently, we will need resources to add/test image variants as required (e.g. bare metal, containers, VIRL, etc.).

All comments and volunteers to help are welcome!
-daw-



_______________________________________________
vpp-dev mailing list
vpp-dev@lists.fd.io
https://lists.fd.io/mailman/listinfo/vpp-dev

Reply via email to