aboutsummaryrefslogtreecommitdiffstats
path: root/resources/tools/disk-image-builder
diff options
context:
space:
mode:
Diffstat (limited to 'resources/tools/disk-image-builder')
-rw-r--r--resources/tools/disk-image-builder/centos/.gitignore1
-rw-r--r--resources/tools/disk-image-builder/centos/CHANGELOG7
-rwxr-xr-xresources/tools/disk-image-builder/centos/build-listmaker.sh74
-rwxr-xr-xresources/tools/disk-image-builder/centos/build.sh259
-rw-r--r--resources/tools/disk-image-builder/centos/centos-7-1511.json105
-rw-r--r--resources/tools/disk-image-builder/centos/centos-7.3-1611.json106
-rw-r--r--resources/tools/disk-image-builder/centos/html/ks.cfg45
-rw-r--r--resources/tools/disk-image-builder/centos/listmaker/centos-7-1511.json48
-rw-r--r--resources/tools/disk-image-builder/centos/listmaker/centos-7.3-1611.json48
-rw-r--r--resources/tools/disk-image-builder/centos/listmaker/virl-listmaker-centos-7-1511.yaml12
-rw-r--r--resources/tools/disk-image-builder/centos/listmaker/virl-listmaker-centos-7.3-1611.yaml12
-rw-r--r--resources/tools/disk-image-builder/centos/lists/centos-7-1511_2016-12-08_1.0/pip-requirements.txt14
-rw-r--r--resources/tools/disk-image-builder/centos/lists/centos-7-1511_2016-12-08_1.0/rpm-packages.txt503
-rw-r--r--resources/tools/disk-image-builder/centos/lists/centos-7.3-1611_2016-12-26_1.1/pip-requirements.txt14
-rw-r--r--resources/tools/disk-image-builder/centos/lists/centos-7.3-1611_2016-12-26_1.1/rpm-packages.txt51
-rw-r--r--resources/tools/disk-image-builder/centos/nested/NO-NESTED8
-rwxr-xr-xresources/tools/disk-image-builder/centos/run-listmaker.sh222
-rwxr-xr-xresources/tools/disk-image-builder/centos/scripts-local/upload-image-to-virl.sh71
-rw-r--r--resources/tools/disk-image-builder/centos/scripts-remote/cleanup.sh37
-rw-r--r--resources/tools/disk-image-builder/centos/scripts-remote/post-install.sh104
-rw-r--r--resources/tools/disk-image-builder/centos/scripts-remote/serial-console-centos-7-1511.sh89
-rw-r--r--resources/tools/disk-image-builder/centos/scripts-remote/vagrant-guestadditions.sh22
-rw-r--r--resources/tools/disk-image-builder/centos/scripts-remote/vagrant-user.sh40
23 files changed, 1892 insertions, 0 deletions
diff --git a/resources/tools/disk-image-builder/centos/.gitignore b/resources/tools/disk-image-builder/centos/.gitignore
new file mode 100644
index 0000000000..a007feab07
--- /dev/null
+++ b/resources/tools/disk-image-builder/centos/.gitignore
@@ -0,0 +1 @@
+build/*
diff --git a/resources/tools/disk-image-builder/centos/CHANGELOG b/resources/tools/disk-image-builder/centos/CHANGELOG
new file mode 100644
index 0000000000..db3114b912
--- /dev/null
+++ b/resources/tools/disk-image-builder/centos/CHANGELOG
@@ -0,0 +1,7 @@
+## [1.1] - 2016-12-26
+
+Centos 7.3-1611 -- Use Yum on target. Lists only include delta from distro release.
+
+## [1.0] - 2016-11-25
+
+Initial release -- Centos 7.2-1511 Generated list of RPM and python and Qemu 2.3
diff --git a/resources/tools/disk-image-builder/centos/build-listmaker.sh b/resources/tools/disk-image-builder/centos/build-listmaker.sh
new file mode 100755
index 0000000000..52aaff0b3c
--- /dev/null
+++ b/resources/tools/disk-image-builder/centos/build-listmaker.sh
@@ -0,0 +1,74 @@
+#!/bin/sh
+
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+
+# This builds the "listmaker" image. This is essentially a one-time
+# action and most likely applicable to CSIT test lab only.
+
+cd $(dirname $0)
+BUILD_DIR="$(pwd)/build"
+PACKER_DIR="${BUILD_DIR}/packer"
+OUT_DIR="${BUILD_DIR}/output/listmaker"
+
+if [ "$1" = "centos-7-1511" ]; then
+ RELEASE_NAME="csit-centos-7-1511-listmaker"
+ PACKER_TEMPLATE="listmaker/centos-7-1511.json"
+elif [ "$1" = "centos-7.3-1611" ]; then
+ RELEASE_NAME="csit-centos-7.3-1611-listmaker"
+ PACKER_TEMPLATE="listmaker/centos-7.3-1611.json"
+else
+ echo "Please provide OS as parameter:"
+ echo "Options: ${0} [centos-7-1511|centos-7.3-1611]"
+ exit 1
+fi
+
+VIRL_IMAGE_SUBTYPE=server
+VIRL_IMAGE_NAME="${RELEASE_NAME}"
+VIRL_IMAGE_FILE="${OUT_DIR}/packer-${RELEASE_NAME}"
+
+# export PACKER_LOG="1"
+
+# This script requires that the following two environment variables be defined-
+#
+# $VIRL_USER
+# $VIRL_PASSWORD
+
+if [ "$VIRL_USER" = "" ] || [ "$VIRL_PASSWORD" = "" ]
+then
+ echo '$VIRL_USER and $VIRL_PASSWORD environment variables must be defined'
+ exit 1
+fi
+
+###
+### Download and extract packer, if not already installed
+###
+os=$(uname -s)
+if [ "$os" = "Darwin" ]
+then
+ packer_url="https://releases.hashicorp.com/packer/0.10.1/packer_0.10.1_darwin_amd64.zip"
+elif [ "$os" = "Linux" ]
+then
+ packer_url="https://releases.hashicorp.com/packer/0.10.1/packer_0.10.1_linux_amd64.zip"
+fi
+
+mkdir -p $BUILD_DIR
+wget -P ${PACKER_DIR} -N ${packer_url}
+
+unzip -n ${PACKER_DIR}/packer*zip -d ${PACKER_DIR}
+
+###
+### Build the actual image as per packer script. Packer post-processor will
+### upload it to VIRL.
+###
+${BUILD_DIR}/packer/packer build -var "release=${RELEASE_NAME}" \
+ -var "outputdir=${OUT_DIR}" -force -machine-readable ${PACKER_TEMPLATE}
diff --git a/resources/tools/disk-image-builder/centos/build.sh b/resources/tools/disk-image-builder/centos/build.sh
new file mode 100755
index 0000000000..4b2304294e
--- /dev/null
+++ b/resources/tools/disk-image-builder/centos/build.sh
@@ -0,0 +1,259 @@
+#!/bin/bash -e
+
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Purpose of this script is to build a VirtualBox or QCOW2 disk image
+# for use with CSIT testing.
+#
+# As input parameters, the script takes:
+#
+# - A base Linux distribution (currently, only "ubuntu-14.04.4" is
+# supported),
+# - A release timestamp in the format "YYYY-MM-DD" eg. "2016-05-21".
+# This timestamp MUST reference to a list of packages (APT, PIP)
+# that was previously generated by the "listmaker" VM and script.
+# - A path to the nested VM image.
+#
+# The bullk of the work is done by packer,
+# while this script does some of the pre- and post-processing.
+# Steps executed are:
+#
+# 1.) Determine if building a QCOW or VirtualBox image. Currently,
+# we build a QCOW image if VIRL_* environment variables are
+# present (and we therefore assume we are building for VIRL),
+# or VirtualBox otherwise.
+#
+# 2.) Download packer, if not already installed.
+#
+# 3.) Download APT and PIP packages as required for the image.
+# We're downloading them here, rather than letting the VM
+# download them off the public internet, for two reasons:
+# a.) This allows us to keep and cache packets between runs
+# and download them only once,
+# b.) This means only the build host needs a working proxy
+# configuration and we do not need to worry about setting
+# a proxy inside the VM.
+#
+# 4.) Link the nested VM image into the main VM's temp directory
+#
+# 5.) Create Version and Changelog files
+#
+# 6.) Run Packer. Packer, in turn, will:
+# 6.1.) Download the Operating System ISO image,
+# 6.2.) Start a VM using the selected hypervisor (VirtualBox or Qemu),
+# 6.3.) Boot the VM using the ISO image and send initial keystrokes
+# to initiate installation using a Preseed or Kickstart file,
+# 6.4.) Drive the installation using until the point the VM is reachable
+# over SSH,
+# 6.5.) Copy the temporary directory populated in steps 3-5 above to the VM,
+# 6.6.) Run a script on the VM that performs post-installation:
+# 6.6.1.) Install selected .deb packages
+# 6.6.2.) Install PIP packages as per requirements.txt file
+# 6.6.3.) Install nested VM image and VERSION/CHANGELOG files
+# 6.7.) Run a script on VM that creates a Vagrant user (VirtualBox only)
+# 6.8.) Run a script on VM that performs clean-up:
+# 6.8.1.) Remove any temporary files created,
+# 6.8.2.) Remove SSH host-keys
+# 6.8.3.) Remove root user password
+# 6.8.4.) Shut down the VM
+# 6.9.) [TODO]: Upload the image to VIRL (QCOW only), -or-
+# Convert the image into a Vagrant box (VirtualBox only), and
+# [TODO/FIX]: Upload the Vagrant box to Atlas (VirtualBox only)
+#
+# 7.) Clean up
+
+###
+### 0. Set constants and verify parameters.
+###
+cd $(dirname $0)
+BUILD_DIR="$(pwd)/build"
+PACKER_DIR="${BUILD_DIR}/packer"
+
+RPM_CACHE_DIR="${BUILD_DIR}/cache/rpm"
+PIP_CACHE_DIR="${BUILD_DIR}/cache/pip"
+
+PACKER_TEMPLATE="centos-7.3-1611.json"
+LISTS_DIR="$(dirname $0)/lists"
+
+function syntax {
+ echo 'Syntax: $0 <Operating System> <Release> <Nested VM image>'
+ echo
+ echo '<Operating System>: Base distro, eg. ubuntu-14.04.4'
+ echo '<Release>: Release timestamp, eg. 2016-05-21'
+ echo '<Nested VM image>: Path to nested VM image'
+
+ exit 1
+}
+
+## Parse command line options
+
+OS=$1
+RELDATE=$2
+NESTED_IMG=$3
+
+if [ "$3" = "" ]
+then
+ syntax
+fi
+
+## Identify version by looking at topmost version statement in CHANGELOG
+
+VERSION=$(cat $(dirname $0)/CHANGELOG | grep '^## ' | head -1 | \
+ sed -e 's/.*\[\(.*\)\].*/\1/')
+if [ "${VERSION}" = "" ]
+then
+ echo "Unable to determine build version from CHANGELOG file. Make sure"
+ echo "that there is an entry for the most recent version in CHANGELOG,"
+ echo "and that the entry is formated like"
+ echo
+ echo "## [1.0] - 2016-05-20"
+ exit 1
+fi
+RELEASE="csit-${OS}_${RELDATE}_${VERSION}"
+
+OUTPUT_DIR="${BUILD_DIR}/output/${RELEASE}"
+LIST="${LISTS_DIR}/${OS}_${RELDATE}_${VERSION}"
+
+if [ ! -d "${LIST}" ]
+then
+ echo "${LIST} not found"
+ syntax
+ exit 1
+fi
+if [ ! -f $NESTED_IMG ]
+then
+ echo "Nested image $NESTED_IMG not found"
+ syntax
+ exit 1
+fi
+
+ATLAS_RELDATE=${RELDATE//-}
+ATLAS_VERSION="${ATLAS_RELDATE}.${VERSION}"
+
+# Find an MD5 checksum utility
+
+MD5UTIL=$(which md5sum) || MD5UTIL=$(which md5)
+if [ $? -ne 0 ]
+then
+ echo "No MD5 utility found."
+ echo "Please make sure you either have \"md5sum\" or \"md5\" installed."
+ exit 1
+fi
+
+###
+### 1. Determine build target.
+###
+if [ "$VIRL_USER" = "" ] || [ "$VIRL_PASSWORD" = "" ]
+then
+ OUTPUT_PROVIDER="virtualbox"
+else
+ OUTPUT_PROVIDER="qemu"
+fi
+
+echo "Building version $VERSION for ${OUTPUT_PROVIDER}"
+echo "Release ${RELEASE}"
+echo "Using Nested VM image: ${NESTED_IMG}"
+echo
+
+
+###
+### 2. Download and extract packer, if not already installed
+###
+packer_os=$(uname -s)
+if [ "$packer_os" = "Darwin" ]
+then
+ packer_url="https://releases.hashicorp.com/packer/0.10.1/packer_0.10.1_darwin_amd64.zip"
+elif [ "$packer_os" = "Linux" ]
+then
+ packer_url="https://releases.hashicorp.com/packer/0.10.1/packer_0.10.1_linux_amd64.zip"
+fi
+
+mkdir -p $BUILD_DIR
+wget -P ${PACKER_DIR} -N ${packer_url}
+
+unzip -n ${PACKER_DIR}/packer*zip -d ${PACKER_DIR}
+
+###
+### 3. Download RPM and PIP packages, and cache them
+### Verify downloaded RPM packages.
+### Link required packages into a temp directory for the VM image.
+###
+
+
+rm -fr ${OUTPUT_DIR}
+mkdir -p ${OUTPUT_DIR}/temp/rpm
+mkdir -p ${RPM_CACHE_DIR}
+
+RPM_FILE="${LIST}/rpm-packages.txt"
+###
+### Copy rpm package list to cache dir because we are going to use yum on the image
+###
+echo cp $RPM_FILE ${RPM_CACHE_DIR}
+cp $RPM_FILE ${RPM_CACHE_DIR}
+ln ${RPM_CACHE_DIR}/rpm-packages.txt ${OUTPUT_DIR}/temp/rpm/rpm-packages.txt
+
+## PIP
+
+mkdir -p ${PIP_CACHE_DIR}
+
+# Let PIP do the work of downloading and verifying packages
+pip install --download ${PIP_CACHE_DIR} -r ${LIST}/pip-requirements.txt
+
+# Link packages and requirements file into VM's temp directory
+mkdir -p ${OUTPUT_DIR}/temp/pip
+ln ${PIP_CACHE_DIR}/* ${OUTPUT_DIR}/temp/pip/
+ln ${LIST}/pip-requirements.txt ${OUTPUT_DIR}/temp/requirements.txt
+
+###
+### 4. Link the nested VM image
+###
+rm -fr ${OUTPUT_DIR}/temp/nested-vm
+mkdir ${OUTPUT_DIR}/temp/nested-vm
+ln $NESTED_IMG ${OUTPUT_DIR}/temp/nested-vm/
+
+###
+### 5. Create Version and Changelog files
+###
+
+echo ${RELEASE} > ${OUTPUT_DIR}/temp/VERSION
+ln CHANGELOG ${OUTPUT_DIR}/temp/CHANGELOG
+
+###
+### 6. Run packer
+###
+export PACKER_LOG=1
+export PACKER_LOG_PATH=${OUTPUT_DIR}/packer.log
+${PACKER_DIR}/packer build -var "release=${RELEASE}" \
+ -only ${RELEASE}-${OUTPUT_PROVIDER} \
+ -var "output_dir=${OUTPUT_DIR}/packer" \
+ -var "temp_dir=${OUTPUT_DIR}/temp" \
+ -var "atlas_version=${ATLAS_VERSION}" \
+ -force \
+ -machine-readable ${PACKER_TEMPLATE}
+
+# TODO: Need to figure out "packer push" later. Currently keeps failing.
+# ${PACKER_DIR}/packer push -name ckoester/test123 -var "release=${RELEASE}" \
+# -var "output_dir=${OUTPUT_DIR}/packer" \
+# -var "temp_dir=${OUTPUT_DIR}/temp" \
+# ${PACKER_TEMPLATE}
+
+###
+### 7. Clean up
+###
+rm -fr ${OUTPUT_DIR}/temp
+
+echo "Done."
+echo "Artifacts:"
+echo
+ls -lR ${OUTPUT_DIR}
diff --git a/resources/tools/disk-image-builder/centos/centos-7-1511.json b/resources/tools/disk-image-builder/centos/centos-7-1511.json
new file mode 100644
index 0000000000..b3178404f9
--- /dev/null
+++ b/resources/tools/disk-image-builder/centos/centos-7-1511.json
@@ -0,0 +1,105 @@
+{
+ "_c": "CentOS-7 ISO URL at the time of creation of this file (05/2016)",
+ "_c": "was http://centos.mirrors.hoobly.com/7/isos/x86_64/CentOS-7-x86_64-Minimal-1511.iso .",
+ "_c": "",
+ "variables": {
+ "release": null,
+ "output_dir": null,
+ "temp_dir": null,
+ "atlas_token": "{{env `ATLAS_TOKEN`}}",
+ "virl_user": "{{env `VIRL_USER`}}",
+ "virl_password": "{{env `VIRL_PASSWORD`}}"
+ },
+ "builders": [
+ {
+ "name": "{{user `release`}}-virtualbox",
+ "type": "virtualbox-iso",
+ "guest_os_type": "RedHat_64",
+ "iso_url": "http://centos.mirrors.hoobly.com/7/isos/x86_64/CentOS-7-x86_64-Minimal-1511.iso",
+ "iso_checksum": "88c0437f0a14c6e2c94426df9d43cd67",
+ "iso_checksum_type": "md5",
+ "output_directory": "{{user `output_dir`}}",
+ "ssh_username": "root",
+ "ssh_password": "csit",
+ "disk_size": "4096",
+ "shutdown_command": "echo 'packer' | sudo -S /sbin/halt -h -p",
+ "http_directory": "html",
+ "iso_target_path" : "build/centos-7-1511.iso",
+ "headless": "true",
+ "boot_command":
+ [
+ "<tab> text ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/ks.cfg<enter><wait>"
+ ]
+ },
+ {
+ "name": "{{user `release`}}-qemu",
+ "type": "qemu",
+ "iso_url": "http://centos.mirrors.hoobly.com/7/isos/x86_64/CentOS-7-x86_64-Minimal-1511.iso",
+ "iso_checksum": "88c0437f0a14c6e2c94426df9d43cd67",
+ "iso_checksum_type": "md5",
+ "output_directory": "{{user `output_dir`}}",
+ "ssh_username": "root",
+ "ssh_password": "csit",
+ "ssh_wait_timeout": "30m",
+ "disk_size": "4096",
+ "shutdown_command": "echo 'packer' | sudo -S /sbin/halt -h -p",
+ "http_directory": "html",
+ "iso_target_path" : "build/centos-7-1511.iso",
+ "headless": "true",
+ "boot_command":
+ [
+ "<tab> text ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/ks.cfg<enter><wait>"
+ ]
+ }
+ ],
+ "provisioners": [
+ {
+ "type": "file",
+ "source": "{{ user `temp_dir`}}",
+ "destination": "/root"
+ },
+ {
+ "type": "shell",
+ "script": "scripts-remote/post-install.sh"
+ },
+ {
+ "type": "shell",
+ "only": ["{{user `release`}}-qemu"],
+ "script": "scripts-remote/serial-console-centos-7-1511.sh"
+ },
+ {
+ "type": "shell",
+ "only": ["{{user `release`}}-virtualbox"],
+ "script": "scripts-remote/vagrant-user.sh"
+ },
+ {
+ "type": "shell",
+ "only": ["{{user `release`}}-virtualbox"],
+ "script": "scripts-remote/vagrant-guestadditions.sh"
+ },
+ {
+ "type": "shell",
+ "script": "scripts-remote/cleanup.sh"
+ }
+ ],
+ "post-processors": [
+ {
+ "type": "vagrant",
+ "only": ["{{user `release`}}-virtualbox"],
+ "keep_input_artifact": true
+ },
+ {
+ "type": "shell-local",
+ "only": ["{{user `release`}}-qemu"],
+ "script": "scripts-local/upload-image-to-virl.sh",
+ "keep_input_artifact": true,
+ "environment_vars":
+ [
+ "VIRL_USER={{user `virl_user`}}",
+ "VIRL_PASSWORD={{user `virl_password`}}",
+ "VIRL_IMAGE_SUBTYPE=server",
+ "VIRL_IMAGE_NAME={{user `release`}}"
+ ]
+ }
+ ]
+}
diff --git a/resources/tools/disk-image-builder/centos/centos-7.3-1611.json b/resources/tools/disk-image-builder/centos/centos-7.3-1611.json
new file mode 100644
index 0000000000..557efc795e
--- /dev/null
+++ b/resources/tools/disk-image-builder/centos/centos-7.3-1611.json
@@ -0,0 +1,106 @@
+{
+ "_c": "CentOS-7 ISO URL at the time of creation of this file (05/2016)",
+ "_c": "was http://centos.chicago.waneq.com/7/isos/x86_64/CentOS-7-x86_64-Minimal-1611.iso.",
+ "_c": "",
+ "variables": {
+ "release": null,
+ "output_dir": null,
+ "temp_dir": null,
+ "atlas_token": "{{env `ATLAS_TOKEN`}}",
+ "virl_user": "{{env `VIRL_USER`}}",
+ "virl_password": "{{env `VIRL_PASSWORD`}}"
+ },
+ "builders": [
+ {
+ "name": "{{user `release`}}-virtualbox",
+ "type": "virtualbox-iso",
+ "guest_os_type": "RedHat_64",
+ "iso_url": "http://centos.chicago.waneq.com/7/isos/x86_64/CentOS-7-x86_64-Minimal-1611.iso",
+ "iso_checksum": "71a7aa147877b413497cdff5b1e0aa5bc0c9484f",
+ "iso_checksum_type": "sha1",
+ "output_directory": "{{user `output_dir`}}",
+ "ssh_username": "root",
+ "ssh_password": "csit",
+ "ssh_wait_timeout": "30m",
+ "disk_size": "4096",
+ "shutdown_command": "echo 'packer' | sudo -S /sbin/halt -h -p",
+ "http_directory": "html",
+ "iso_target_path" : "build/centos-7.3-1611.iso",
+ "headless": "true",
+ "boot_command":
+ [
+ "<tab> text ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/ks.cfg<enter><wait>"
+ ]
+ },
+ {
+ "name": "{{user `release`}}-qemu",
+ "type": "qemu",
+ "iso_url": "http://centos.chicago.waneq.com/7/isos/x86_64/CentOS-7-x86_64-Minimal-1611.iso",
+ "iso_checksum": "71a7aa147877b413497cdff5b1e0aa5bc0c9484f",
+ "iso_checksum_type": "sha1",
+ "output_directory": "{{user `output_dir`}}",
+ "ssh_username": "root",
+ "ssh_password": "csit",
+ "ssh_wait_timeout": "30m",
+ "disk_size": "4096",
+ "shutdown_command": "echo 'packer' | sudo -S /sbin/halt -h -p",
+ "http_directory": "html",
+ "iso_target_path" : "build/centos-7.3-1611.iso",
+ "headless": "true",
+ "boot_command":
+ [
+ "<tab> text ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/ks.cfg<enter><wait>"
+ ]
+ }
+ ],
+ "provisioners": [
+ {
+ "type": "file",
+ "source": "{{ user `temp_dir`}}",
+ "destination": "/root"
+ },
+ {
+ "type": "shell",
+ "script": "scripts-remote/post-install.sh"
+ },
+ {
+ "type": "shell",
+ "only": ["{{user `release`}}-qemu"],
+ "script": "scripts-remote/serial-console-centos-7-1511.sh"
+ },
+ {
+ "type": "shell",
+ "only": ["{{user `release`}}-virtualbox"],
+ "script": "scripts-remote/vagrant-user.sh"
+ },
+ {
+ "type": "shell",
+ "only": ["{{user `release`}}-virtualbox"],
+ "script": "scripts-remote/vagrant-guestadditions.sh"
+ },
+ {
+ "type": "shell",
+ "script": "scripts-remote/cleanup.sh"
+ }
+ ],
+ "post-processors": [
+ {
+ "type": "vagrant",
+ "only": ["{{user `release`}}-virtualbox"],
+ "keep_input_artifact": true
+ },
+ {
+ "type": "shell-local",
+ "only": ["{{user `release`}}-qemu"],
+ "script": "scripts-local/upload-image-to-virl.sh",
+ "keep_input_artifact": true,
+ "environment_vars":
+ [
+ "VIRL_USER={{user `virl_user`}}",
+ "VIRL_PASSWORD={{user `virl_password`}}",
+ "VIRL_IMAGE_SUBTYPE=server",
+ "VIRL_IMAGE_NAME={{user `release`}}"
+ ]
+ }
+ ]
+}
diff --git a/resources/tools/disk-image-builder/centos/html/ks.cfg b/resources/tools/disk-image-builder/centos/html/ks.cfg
new file mode 100644
index 0000000000..81d6f62aa8
--- /dev/null
+++ b/resources/tools/disk-image-builder/centos/html/ks.cfg
@@ -0,0 +1,45 @@
+#platform=x86, AMD64, or Intel EM64T
+#version=DEVEL
+# License agreement
+eula --agreed
+# Install OS instead of upgrade
+text
+install
+# Keyboard layouts
+keyboard 'us'
+# Root password
+rootpw --iscrypted $1$OmK6zb39$lJdJnxgmx5z/.x1YXpnjf/
+# System timezone
+timezone America/New_York --isUtc
+# System language
+lang en_US.UTF-8
+# Firewall configuration
+firewall --disabled
+# Syste authorization information
+auth --useshadow --passalgo=sha512
+# Use CDROM installation media
+cdrom
+# Use graphical install
+graphical
+# SELinux configuration
+selinux --disabled
+firewall --disable
+# Do not configure the X Window System
+skipx
+reboot
+# Network information
+network --bootproto=dhcp
+network --hostname=centos7
+# Halt after installation
+# System bootloader configuration
+bootloader --location=mbr --boot-drive=vda
+# Partition clearing information
+autopart --type=lvm
+clearpart --none --initlabel
+
+%packages
+@core
+openssh-server
+rpm
+yum
+%end
diff --git a/resources/tools/disk-image-builder/centos/listmaker/centos-7-1511.json b/resources/tools/disk-image-builder/centos/listmaker/centos-7-1511.json
new file mode 100644
index 0000000000..a4a5f8a094
--- /dev/null
+++ b/resources/tools/disk-image-builder/centos/listmaker/centos-7-1511.json
@@ -0,0 +1,48 @@
+{
+ "_c": "Centos7 ISO URL at the time of creation of this file (05/2016)",
+ "_c": "was http://centos.mirrors.hoobly.com/7/isos/x86_64/CentOS-7-x86_64-Minimal-1511.iso .",
+ "_c": "",
+ "variables": {
+ "release": null,
+ "outputdir": null,
+ "atlas_token": "{{env `ATLAS_TOKEN`}}",
+ "virl_user": "{{env `VIRL_USER`}}",
+ "virl_password": "{{env `VIRL_PASSWORD`}}"
+ },
+ "builders": [
+ {
+ "name": "{{user `release`}}",
+ "type": "qemu",
+ "iso_url": "http://centos.mirrors.hoobly.com/7/isos/x86_64/CentOS-7-x86_64-Minimal-1511.iso",
+ "iso_checksum": "88c0437f0a14c6e2c94426df9d43cd67",
+ "iso_checksum_type": "md5",
+ "output_directory": "{{user `outputdir`}}",
+ "ssh_username": "root",
+ "ssh_password": "csit",
+ "ssh_wait_timeout": "60m",
+ "disk_size": "16384",
+ "shutdown_command": "shutdown -P now",
+ "http_directory": "html",
+ "iso_target_path" : "build/centos-7-1511.iso",
+ "headless": "true",
+ "boot_command":
+ [
+ "<tab> text ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/ks.cfg<enter><wait>"
+ ]
+ }
+ ],
+ "post-processors": [
+ {
+ "type": "shell-local",
+ "script": "scripts-local/upload-image-to-virl.sh",
+ "keep_input_artifact": true,
+ "environment_vars":
+ [
+ "VIRL_USER={{user `virl_user`}}",
+ "VIRL_PASSWORD={{user `virl_password`}}",
+ "VIRL_IMAGE_SUBTYPE=server",
+ "VIRL_IMAGE_NAME={{user `release`}}"
+ ]
+ }
+ ]
+}
diff --git a/resources/tools/disk-image-builder/centos/listmaker/centos-7.3-1611.json b/resources/tools/disk-image-builder/centos/listmaker/centos-7.3-1611.json
new file mode 100644
index 0000000000..7504ca9941
--- /dev/null
+++ b/resources/tools/disk-image-builder/centos/listmaker/centos-7.3-1611.json
@@ -0,0 +1,48 @@
+{
+ "_c": "Centos7 ISO URL at the time of creation of this file (12/2016)",
+ "_c": "http://centos.chicago.waneq.com/7/isos/x86_64/CentOS-7-x86_64-Minimal-1611.iso",
+ "_c": "",
+ "variables": {
+ "release": null,
+ "outputdir": null,
+ "atlas_token": "{{env `ATLAS_TOKEN`}}",
+ "virl_user": "{{env `VIRL_USER`}}",
+ "virl_password": "{{env `VIRL_PASSWORD`}}"
+ },
+ "builders": [
+ {
+ "name": "{{user `release`}}",
+ "type": "qemu",
+ "iso_url": "http://centos.chicago.waneq.com/7/isos/x86_64/CentOS-7-x86_64-Minimal-1611.iso",
+ "iso_checksum": "71a7aa147877b413497cdff5b1e0aa5bc0c9484f",
+ "iso_checksum_type": "sha1",
+ "output_directory": "{{user `outputdir`}}",
+ "ssh_username": "root",
+ "ssh_password": "csit",
+ "ssh_wait_timeout": "30m",
+ "disk_size": "16384",
+ "shutdown_command": "shutdown -P now",
+ "http_directory": "html",
+ "iso_target_path" : "build/centos-7.3-1611.iso",
+ "headless": "true",
+ "boot_command":
+ [
+ "<tab> text ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/ks.cfg<enter><wait>"
+ ]
+ }
+ ],
+ "post-processors": [
+ {
+ "type": "shell-local",
+ "script": "scripts-local/upload-image-to-virl.sh",
+ "keep_input_artifact": true,
+ "environment_vars":
+ [
+ "VIRL_USER={{user `virl_user`}}",
+ "VIRL_PASSWORD={{user `virl_password`}}",
+ "VIRL_IMAGE_SUBTYPE=server",
+ "VIRL_IMAGE_NAME={{user `release`}}"
+ ]
+ }
+ ]
+}
diff --git a/resources/tools/disk-image-builder/centos/listmaker/virl-listmaker-centos-7-1511.yaml b/resources/tools/disk-image-builder/centos/listmaker/virl-listmaker-centos-7-1511.yaml
new file mode 100644
index 0000000000..fd33db0faf
--- /dev/null
+++ b/resources/tools/disk-image-builder/centos/listmaker/virl-listmaker-centos-7-1511.yaml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<topology xmlns="http://www.cisco.com/VIRL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="0.9" xsi:schemaLocation="http://www.cisco.com/VIRL https://raw.github.com/CiscoVIRL/schema/v0.9/virl.xsd">
+ <extensions>
+ <entry key="management_network" type="String">flat</entry>
+ </extensions>
+ <node name="listmaker" type="SIMPLE" subtype="server" location="570,238" vmImage="server-csit-centos-7-1511-listmaker">
+ <extensions>
+ <entry key="config" type="String">UNUSED</entry>
+ <entry key="Auto-generate config" type="Boolean">false</entry>
+ </extensions>
+ </node>
+</topology>
diff --git a/resources/tools/disk-image-builder/centos/listmaker/virl-listmaker-centos-7.3-1611.yaml b/resources/tools/disk-image-builder/centos/listmaker/virl-listmaker-centos-7.3-1611.yaml
new file mode 100644
index 0000000000..fd33db0faf
--- /dev/null
+++ b/resources/tools/disk-image-builder/centos/listmaker/virl-listmaker-centos-7.3-1611.yaml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<topology xmlns="http://www.cisco.com/VIRL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="0.9" xsi:schemaLocation="http://www.cisco.com/VIRL https://raw.github.com/CiscoVIRL/schema/v0.9/virl.xsd">
+ <extensions>
+ <entry key="management_network" type="String">flat</entry>
+ </extensions>
+ <node name="listmaker" type="SIMPLE" subtype="server" location="570,238" vmImage="server-csit-centos-7-1511-listmaker">
+ <extensions>
+ <entry key="config" type="String">UNUSED</entry>
+ <entry key="Auto-generate config" type="Boolean">false</entry>
+ </extensions>
+ </node>
+</topology>
diff --git a/resources/tools/disk-image-builder/centos/lists/centos-7-1511_2016-12-08_1.0/pip-requirements.txt b/resources/tools/disk-image-builder/centos/lists/centos-7-1511_2016-12-08_1.0/pip-requirements.txt
new file mode 100644
index 0000000000..98d9851d75
--- /dev/null
+++ b/resources/tools/disk-image-builder/centos/lists/centos-7-1511_2016-12-08_1.0/pip-requirements.txt
@@ -0,0 +1,14 @@
+docopt==0.6.2
+ecdsa==0.13
+enum34==1.1.2
+interruptingcow==0.6
+ipaddress==1.0.16
+paramiko==1.16.0
+pycrypto==2.6.1
+pykwalify==1.5.0
+python-dateutil==2.4.2
+PyYAML==3.11
+requests==2.9.1
+robotframework==2.9.2
+scapy==2.3.1
+scp==0.10.2
diff --git a/resources/tools/disk-image-builder/centos/lists/centos-7-1511_2016-12-08_1.0/rpm-packages.txt b/resources/tools/disk-image-builder/centos/lists/centos-7-1511_2016-12-08_1.0/rpm-packages.txt
new file mode 100644
index 0000000000..d446337f03
--- /dev/null
+++ b/resources/tools/disk-image-builder/centos/lists/centos-7-1511_2016-12-08_1.0/rpm-packages.txt
@@ -0,0 +1,503 @@
+acl-2.2.51-12.el7.x86_64
+aic94xx-firmware-30-6.el7.noarch
+alsa-firmware-1.0.28-2.el7.noarch
+alsa-lib-1.0.28-2.el7.x86_64
+alsa-tools-firmware-1.0.28-2.el7.x86_64
+atk-2.14.0-1.el7.x86_64
+audit-2.4.1-5.el7.x86_64
+audit-libs-2.4.1-5.el7.x86_64
+audit-libs-python-2.4.1-5.el7.x86_64
+authconfig-6.2.8-10.el7.x86_64
+avahi-autoipd-0.6.31-15.el7_2.1.x86_64
+avahi-libs-0.6.31-15.el7_2.1.x86_64
+basesystem-10.0-7.el7.centos.noarch
+bash-4.2.46-20.el7_2.x86_64
+bind-libs-lite-9.9.4-29.el7_2.4.x86_64
+bind-license-9.9.4-29.el7_2.4.noarch
+binutils-2.23.52.0.1-55.el7.x86_64
+biosdevname-0.6.2-1.el7.x86_64
+boost-system-1.53.0-25.el7.x86_64
+boost-thread-1.53.0-25.el7.x86_64
+bridge-utils-1.5-9.el7.x86_64
+btrfs-progs-3.19.1-1.el7.x86_64
+bzip2-libs-1.0.6-13.el7.x86_64
+ca-certificates-2015.2.6-70.1.el7_2.noarch
+cairo-1.14.2-1.el7.x86_64
+celt051-0.5.1.3-8.el7.x86_64
+centos-logos-70.0.6-3.el7.centos.noarch
+centos-release-7-2.1511.el7.centos.2.10.x86_64
+checkpolicy-2.1.12-6.el7.x86_64
+chkconfig-1.3.61-5.el7_2.1.x86_64
+chrony-2.1.1-1.el7.centos.x86_64
+cloud-init-0.7.5-10.el7.centos.1.x86_64
+coreutils-8.22-15.el7_2.1.x86_64
+cpio-2.11-24.el7.x86_64
+cpp-4.8.5-4.el7.x86_64
+cracklib-2.9.0-11.el7.x86_64
+cracklib-dicts-2.9.0-11.el7.x86_64
+cronie-1.4.11-14.el7_2.1.x86_64
+cronie-anacron-1.4.11-14.el7_2.1.x86_64
+crontabs-1.11-6.20121102git.el7.noarch
+cryptsetup-libs-1.6.7-1.el7.x86_64
+cups-libs-1.6.3-22.el7.x86_64
+curl-7.29.0-25.el7.centos.x86_64
+cyrus-sasl-lib-2.1.26-20.el7_2.x86_64
+dbus-1.6.12-14.el7_2.x86_64
+dbus-glib-0.100-7.el7.x86_64
+dbus-libs-1.6.12-14.el7_2.x86_64
+dbus-python-1.1.1-9.el7.x86_64
+device-mapper-1.02.107-5.el7_2.5.x86_64
+device-mapper-event-1.02.107-5.el7_2.5.x86_64
+device-mapper-event-libs-1.02.107-5.el7_2.5.x86_64
+device-mapper-libs-1.02.107-5.el7_2.5.x86_64
+device-mapper-persistent-data-0.6.2-1.el7_2.x86_64
+dhclient-4.2.5-42.el7.centos.x86_64
+dhcp-common-4.2.5-42.el7.centos.x86_64
+dhcp-libs-4.2.5-42.el7.centos.x86_64
+diffutils-3.3-4.el7.x86_64
+dkms-2.2.0.3-34.git.9e0394d.el7.noarch
+dmidecode-2.12-9.el7.x86_64
+dnsmasq-2.66-14.el7_2.1.x86_64
+dracut-033-360.el7_2.1.x86_64
+dracut-config-rescue-033-360.el7_2.1.x86_64
+dracut-network-033-360.el7_2.1.x86_64
+e2fsprogs-1.42.9-7.el7.x86_64
+e2fsprogs-libs-1.42.9-7.el7.x86_64
+ebtables-2.0.10-13.el7.x86_64
+elfutils-libelf-0.163-3.el7.x86_64
+elfutils-libs-0.163-3.el7.x86_64
+epel-release-7-8.noarch
+ethtool-3.15-2.el7.x86_64
+expat-2.1.0-8.el7.x86_64
+file-5.11-31.el7.x86_64
+file-libs-5.11-31.el7.x86_64
+filesystem-3.2-20.el7.x86_64
+findutils-4.5.11-5.el7.x86_64
+fipscheck-1.4.1-5.el7.x86_64
+fipscheck-lib-1.4.1-5.el7.x86_64
+firewalld-0.3.9-14.el7.noarch
+flac-libs-1.3.0-5.el7_1.x86_64
+fontconfig-2.10.95-7.el7.x86_64
+fontpackages-filesystem-1.44-8.el7.noarch
+freetype-2.4.11-11.el7.x86_64
+fxload-2002_04_11-16.el7.x86_64
+gawk-4.0.2-4.el7.x86_64
+gcc-4.8.5-4.el7.x86_64
+gd-2.0.35-26.el7.x86_64
+gdbm-1.10-8.el7.x86_64
+gdk-pixbuf2-2.31.6-3.el7.x86_64
+gettext-0.18.2.1-4.el7.x86_64
+gettext-libs-0.18.2.1-4.el7.x86_64
+ghostscript-9.07-18.el7.x86_64
+ghostscript-fonts-5.50-32.el7.noarch
+git-1.8.3.1-6.el7_2.1.x86_64
+glib2-2.42.2-5.el7.x86_64
+glibc-2.17-106.el7_2.8.x86_64
+glibc-common-2.17-106.el7_2.8.x86_64
+glibc-devel-2.17-106.el7_2.8.x86_64
+glibc-headers-2.17-106.el7_2.8.x86_64
+glib-networking-2.42.0-1.el7.x86_64
+glusterfs-3.7.1-16.0.1.el7.centos.x86_64
+glusterfs-api-3.7.1-16.0.1.el7.centos.x86_64
+glusterfs-client-xlators-3.7.1-16.0.1.el7.centos.x86_64
+glusterfs-libs-3.7.1-16.0.1.el7.centos.x86_64
+gmp-6.0.0-12.el7_1.x86_64
+gnupg2-2.0.22-3.el7.x86_64
+gnutls-3.3.8-14.el7_2.x86_64
+gobject-introspection-1.42.0-1.el7.x86_64
+gperftools-2.4-7.el7.x86_64
+gperftools-devel-2.4-7.el7.x86_64
+gperftools-libs-2.4-7.el7.x86_64
+gpgme-1.3.2-5.el7.x86_64
+gpg-pubkey-352c64e5-52ae6884
+gpg-pubkey-f4a80eb5-53a7ff4b
+graphite2-1.3.6-1.el7_2.x86_64
+graphviz-2.30.1-19.el7.x86_64
+grep-2.20-2.el7.x86_64
+groff-base-1.22.2-8.el7.x86_64
+grub2-2.02-0.34.el7.centos.x86_64
+grub2-tools-2.02-0.34.el7.centos.x86_64
+grubby-8.28-17.el7.x86_64
+gsettings-desktop-schemas-3.14.2-1.el7.x86_64
+gsm-1.0.13-11.el7.x86_64
+gssproxy-0.4.1-8.el7_2.x86_64
+gtk2-2.24.28-8.el7.x86_64
+gzip-1.5-8.el7.x86_64
+hardlink-1.0-19.el7.x86_64
+harfbuzz-0.9.36-1.el7.x86_64
+hicolor-icon-theme-0.12-7.el7.noarch
+hostname-3.13-3.el7.x86_64
+http://cbs.centos.org/kojifiles/packages/qemu-kvm-ev/2.3.0/31.el7_2.21.1/x86_64/libcacard-devel-ev-2.3.0-31.el7_2.21.1.x86_64.rpm
+http://cbs.centos.org/kojifiles/packages/qemu-kvm-ev/2.3.0/31.el7_2.21.1/x86_64/libcacard-ev-2.3.0-31.el7_2.21.1.x86_64.rpm
+http://cbs.centos.org/kojifiles/packages/qemu-kvm-ev/2.3.0/31.el7_2.21.1/x86_64/libcacard-tools-ev-2.3.0-31.el7_2.21.1.x86_64.rpm
+http://cbs.centos.org/kojifiles/packages/qemu-kvm-ev/2.3.0/31.el7_2.21.1/x86_64/qemu-img-ev-2.3.0-31.el7_2.21.1.x86_64.rpm
+http://cbs.centos.org/kojifiles/packages/qemu-kvm-ev/2.3.0/31.el7_2.21.1/x86_64/qemu-kvm-common-ev-2.3.0-31.el7_2.21.1.x86_64.rpm
+http://cbs.centos.org/kojifiles/packages/qemu-kvm-ev/2.3.0/31.el7_2.21.1/x86_64/qemu-kvm-ev-2.3.0-31.el7_2.21.1.x86_64.rpm
+http://cbs.centos.org/kojifiles/packages/qemu-kvm-ev/2.3.0/31.el7_2.21.1/x86_64/qemu-kvm-ev-debuginfo-2.3.0-31.el7_2.21.1.x86_64.rpm
+http://cbs.centos.org/kojifiles/packages/qemu-kvm-ev/2.3.0/31.el7_2.21.1/x86_64/qemu-kvm-tools-ev-2.3.0-31.el7_2.21.1.x86_64.rpm
+hwdata-0.252-8.1.el7.x86_64
+info-5.1-4.el7.x86_64
+initscripts-9.49.30-1.el7_2.3.x86_64
+iproute-3.10.0-54.el7_2.1.x86_64
+iprutils-2.4.8-1.el7.x86_64
+iptables-1.4.21-16.el7.x86_64
+iputils-20121221-7.el7.x86_64
+ipxe-roms-qemu-20130517-8.gitc4bce43.el7_2.1.noarch
+irqbalance-1.0.7-5.el7.x86_64
+ivtv-firmware-20080701-26.el7.noarch
+iwl1000-firmware-39.31.5.1-43.el7.noarch
+iwl100-firmware-39.31.5.1-43.el7.noarch
+iwl105-firmware-18.168.6.1-43.el7.noarch
+iwl135-firmware-18.168.6.1-43.el7.noarch
+iwl2000-firmware-18.168.6.1-43.el7.noarch
+iwl2030-firmware-18.168.6.1-43.el7.noarch
+iwl3160-firmware-22.0.7.0-43.el7.noarch
+iwl3945-firmware-15.32.2.9-43.el7.noarch
+iwl4965-firmware-228.61.2.24-43.el7.noarch
+iwl5000-firmware-8.83.5.1_1-43.el7.noarch
+iwl5150-firmware-8.24.2.2-43.el7.noarch
+iwl6000-firmware-9.221.4.1-43.el7.noarch
+iwl6000g2a-firmware-17.168.5.3-43.el7.noarch
+iwl6000g2b-firmware-17.168.5.2-43.el7.noarch
+iwl6050-firmware-41.28.5.1-43.el7.noarch
+iwl7260-firmware-22.0.7.0-43.el7.noarch
+jasper-libs-1.900.1-29.el7.x86_64
+jbigkit-libs-2.0-11.el7.x86_64
+json-c-0.11-4.el7_0.x86_64
+kbd-1.15.5-11.el7.x86_64
+kbd-legacy-1.15.5-11.el7.noarch
+kbd-misc-1.15.5-11.el7.noarch
+kernel-3.10.0-327.36.3.el7.x86_64
+kernel-3.10.0-327.el7.x86_64
+kernel-devel-3.10.0-327.36.3.el7.x86_64
+kernel-headers-3.10.0-327.36.3.el7.x86_64
+kernel-tools-3.10.0-327.36.3.el7.x86_64
+kernel-tools-libs-3.10.0-327.36.3.el7.x86_64
+kexec-tools-2.0.7-38.el7_2.1.x86_64
+keyutils-1.5.8-3.el7.x86_64
+keyutils-libs-1.5.8-3.el7.x86_64
+kmod-20-8.el7_2.x86_64
+kmod-libs-20-8.el7_2.x86_64
+kpartx-0.4.9-85.el7_2.6.x86_64
+krb5-libs-1.13.2-12.el7_2.x86_64
+lcms2-2.6-2.el7.x86_64
+less-458-9.el7.x86_64
+libacl-2.2.51-12.el7.x86_64
+libaio-0.3.109-13.el7.x86_64
+libassuan-2.1.0-3.el7.x86_64
+libasyncns-0.8-7.el7.x86_64
+libattr-2.4.46-12.el7.x86_64
+libbasicobjects-0.1.1-25.el7.x86_64
+libblkid-2.23.2-26.el7_2.3.x86_64
+libcacard-devel-ev-2.3.0-31.el7_2.21.1.x86_64
+libcacard-ev-2.3.0-31.el7_2.21.1.x86_64
+libcacard-tools-ev-2.3.0-31.el7_2.21.1.x86_64
+libcap-2.22-8.el7.x86_64
+libcap-ng-0.7.5-4.el7.x86_64
+libcgroup-0.41-8.el7.x86_64
+libcollection-0.6.2-25.el7.x86_64
+libcom_err-1.42.9-7.el7.x86_64
+libcroco-0.6.8-5.el7.x86_64
+libcurl-7.29.0-25.el7.centos.x86_64
+libdaemon-0.14-7.el7.x86_64
+libdb-5.3.21-19.el7.x86_64
+libdb-utils-5.3.21-19.el7.x86_64
+libdrm-2.4.60-3.el7.x86_64
+libedit-3.0-12.20121213cvs.el7.x86_64
+libestr-0.1.9-2.el7.x86_64
+libevent-2.0.21-4.el7.x86_64
+libffi-3.0.13-16.el7.x86_64
+libfontenc-1.1.2-3.el7.x86_64
+libgcc-4.8.5-4.el7.x86_64
+libgcrypt-1.5.3-12.el7_1.1.x86_64
+libgnome-keyring-3.8.0-3.el7.x86_64
+libgomp-4.8.5-4.el7.x86_64
+libgpg-error-1.12-3.el7.x86_64
+libgudev1-219-19.el7_2.13.x86_64
+libibverbs-1.1.8-8.el7.x86_64
+libICE-1.0.9-2.el7.x86_64
+libidn-1.28-4.el7.x86_64
+libini_config-1.2.0-25.el7.x86_64
+libiscsi-1.9.0-6.el7.x86_64
+libjpeg-turbo-1.2.90-5.el7.x86_64
+libmnl-1.0.3-7.el7.x86_64
+libmodman-2.0.1-8.el7.x86_64
+libmount-2.23.2-26.el7_2.3.x86_64
+libmpc-1.0.1-3.el7.x86_64
+libndp-1.2-6.el7_2.x86_64
+libnetfilter_conntrack-1.0.4-2.el7.x86_64
+libnfnetlink-1.0.1-4.el7.x86_64
+libnfsidmap-0.25-12.el7.x86_64
+libnl3-3.2.21-10.el7.x86_64
+libogg-1.3.0-7.el7.x86_64
+libpath_utils-0.2.1-25.el7.x86_64
+libpcap-1.5.3-8.el7.x86_64
+libpciaccess-0.13.4-2.el7.x86_64
+libpipeline-1.2.3-3.el7.x86_64
+libpng-1.5.13-7.el7_2.x86_64
+libproxy-0.4.11-8.el7.x86_64
+libpwquality-1.2.3-4.el7.x86_64
+librados2-0.80.7-3.el7.x86_64
+librbd1-0.80.7-3.el7.x86_64
+librdmacm-1.0.21-1.el7.x86_64
+libref_array-0.1.5-25.el7.x86_64
+librsvg2-2.39.0-1.el7.x86_64
+libseccomp-2.2.1-1.el7.x86_64
+libselinux-2.2.2-6.el7.x86_64
+libselinux-python-2.2.2-6.el7.x86_64
+libselinux-utils-2.2.2-6.el7.x86_64
+libsemanage-2.1.10-18.el7.x86_64
+libsemanage-python-2.1.10-18.el7.x86_64
+libsepol-2.1.9-3.el7.x86_64
+libSM-1.2.2-2.el7.x86_64
+libsndfile-1.0.25-10.el7.x86_64
+libsoup-2.48.1-3.el7.x86_64
+libss-1.42.9-7.el7.x86_64
+libssh2-1.4.3-10.el7_2.1.x86_64
+libstdc++-4.8.5-4.el7.x86_64
+libtalloc-2.1.5-1.el7_2.x86_64
+libtasn1-3.8-2.el7.x86_64
+libtevent-0.9.26-1.el7_2.1.x86_64
+libthai-0.1.14-9.el7.x86_64
+libtiff-4.0.3-25.el7_2.x86_64
+libtirpc-0.2.4-0.6.el7.x86_64
+libtool-ltdl-2.4.2-21.el7_2.x86_64
+libunistring-0.9.3-9.el7.x86_64
+libunwind-1.1-5.el7_2.2.x86_64
+libusb-0.1.4-3.el7.x86_64
+libusbx-1.0.15-4.el7.x86_64
+libuser-0.60-7.el7_1.x86_64
+libutempter-1.1.6-4.el7.x86_64
+libuuid-2.23.2-26.el7_2.3.x86_64
+libverto-0.2.5-4.el7.x86_64
+libverto-tevent-0.2.5-4.el7.x86_64
+libvorbis-1.3.3-8.el7.x86_64
+libwebp-0.3.0-3.el7.x86_64
+libX11-1.6.3-2.el7.x86_64
+libX11-common-1.6.3-2.el7.noarch
+libXau-1.0.8-2.1.el7.x86_64
+libXaw-1.0.12-5.el7.x86_64
+libxcb-1.11-4.el7.x86_64
+libXcomposite-0.4.4-4.1.el7.x86_64
+libXcursor-1.1.14-2.1.el7.x86_64
+libXdamage-1.1.4-4.1.el7.x86_64
+libXext-1.3.3-3.el7.x86_64
+libXfixes-5.0.1-2.1.el7.x86_64
+libXfont-1.5.1-2.el7.x86_64
+libXft-2.3.2-2.el7.x86_64
+libXi-1.7.4-2.el7.x86_64
+libXinerama-1.1.3-2.1.el7.x86_64
+libxml2-2.9.1-6.el7_2.3.x86_64
+libXmu-1.1.2-2.el7.x86_64
+libXpm-3.5.11-3.el7.x86_64
+libXrandr-1.4.2-2.el7.x86_64
+libXrender-0.9.8-2.1.el7.x86_64
+libxshmfence-1.2-1.el7.x86_64
+libXt-1.1.4-6.1.el7.x86_64
+libXtst-1.2.2-2.1.el7.x86_64
+libXxf86vm-1.1.3-2.1.el7.x86_64
+libyaml-0.1.4-11.el7_0.x86_64
+linux-firmware-20150904-43.git6ebf5d5.el7.noarch
+logrotate-3.8.6-7.el7_2.x86_64
+lsscsi-0.27-3.el7.x86_64
+lua-5.1.4-14.el7.x86_64
+lvm2-2.02.130-5.el7_2.5.x86_64
+lvm2-libs-2.02.130-5.el7_2.5.x86_64
+lzo-2.06-8.el7.x86_64
+make-3.82-21.el7.x86_64
+man-db-2.6.3-9.el7.x86_64
+mariadb-libs-5.5.50-1.el7_2.x86_64
+mesa-libEGL-10.6.5-3.20150824.el7.x86_64
+mesa-libgbm-10.6.5-3.20150824.el7.x86_64
+mesa-libGL-10.6.5-3.20150824.el7.x86_64
+mesa-libglapi-10.6.5-3.20150824.el7.x86_64
+microcode_ctl-2.1-12.el7_2.1.x86_64
+mozjs17-17.0.0-12.el7.x86_64
+mpfr-3.1.1-4.el7.x86_64
+ncurses-5.9-13.20130511.el7.x86_64
+ncurses-base-5.9-13.20130511.el7.noarch
+ncurses-libs-5.9-13.20130511.el7.x86_64
+nettle-2.7.1-4.el7.x86_64
+net-tools-2.0-0.17.20131004git.el7.x86_64
+NetworkManager-1.0.6-31.el7_2.x86_64
+NetworkManager-libnm-1.0.6-31.el7_2.x86_64
+NetworkManager-tui-1.0.6-31.el7_2.x86_64
+NetworkManager-wifi-1.0.6-31.el7_2.x86_64
+newt-0.52.15-4.el7.x86_64
+newt-python-0.52.15-4.el7.x86_64
+nfs-utils-1.3.0-0.21.el7_2.1.x86_64
+nspr-4.11.0-1.el7_2.x86_64
+nspr-devel-4.11.0-1.el7_2.x86_64
+nss-3.21.0-9.el7_2.x86_64
+nss-devel-3.21.0-9.el7_2.x86_64
+nss-softokn-3.16.2.3-14.2.el7_2.x86_64
+nss-softokn-devel-3.16.2.3-14.2.el7_2.x86_64
+nss-softokn-freebl-3.16.2.3-14.2.el7_2.x86_64
+nss-softokn-freebl-devel-3.16.2.3-14.2.el7_2.x86_64
+nss-sysinit-3.21.0-9.el7_2.x86_64
+nss-tools-3.21.0-9.el7_2.x86_64
+nss-util-3.21.0-2.2.el7_2.x86_64
+nss-util-devel-3.21.0-2.2.el7_2.x86_64
+numactl-libs-2.0.9-6.el7_2.x86_64
+openldap-2.4.40-9.el7_2.x86_64
+openssh-6.6.1p1-25.el7_2.x86_64
+openssh-clients-6.6.1p1-25.el7_2.x86_64
+openssh-server-6.6.1p1-25.el7_2.x86_64
+openssl-1.0.1e-51.el7_2.7.x86_64
+openssl-libs-1.0.1e-51.el7_2.7.x86_64
+os-prober-1.58-5.el7.x86_64
+p11-kit-0.20.7-3.el7.x86_64
+p11-kit-trust-0.20.7-3.el7.x86_64
+pam-1.1.8-12.el7_1.1.x86_64
+pango-1.36.8-2.el7.x86_64
+parted-3.1-23.el7.x86_64
+passwd-0.79-4.el7.x86_64
+pciutils-libs-3.2.1-4.el7.x86_64
+pcre-8.32-15.el7_2.1.x86_64
+perl-5.16.3-286.el7.x86_64
+perl-Carp-1.26-244.el7.noarch
+perl-constant-1.27-2.el7.noarch
+perl-Encode-2.51-7.el7.x86_64
+perl-Error-0.17020-2.el7.noarch
+perl-Exporter-5.68-3.el7.noarch
+perl-File-Path-2.09-2.el7.noarch
+perl-File-Temp-0.23.01-3.el7.noarch
+perl-Filter-1.49-3.el7.x86_64
+perl-Getopt-Long-2.40-2.el7.noarch
+perl-Git-1.8.3.1-6.el7_2.1.noarch
+perl-HTTP-Tiny-0.033-3.el7.noarch
+perl-libs-5.16.3-286.el7.x86_64
+perl-macros-5.16.3-286.el7.x86_64
+perl-parent-0.225-244.el7.noarch
+perl-PathTools-3.40-5.el7.x86_64
+perl-Pod-Escapes-1.04-286.el7.noarch
+perl-podlators-2.5.1-3.el7.noarch
+perl-Pod-Perldoc-3.20-4.el7.noarch
+perl-Pod-Simple-3.28-4.el7.noarch
+perl-Pod-Usage-1.63-3.el7.noarch
+perl-Scalar-List-Utils-1.27-248.el7.x86_64
+perl-Socket-2.010-3.el7.x86_64
+perl-Storable-2.45-3.el7.x86_64
+perl-TermReadKey-2.30-20.el7.x86_64
+perl-Text-ParseWords-3.29-4.el7.noarch
+perl-threads-1.87-4.el7.x86_64
+perl-threads-shared-1.43-6.el7.x86_64
+perl-Time-HiRes-1.9725-3.el7.x86_64
+perl-Time-Local-1.2300-2.el7.noarch
+pinentry-0.8.1-14.el7.x86_64
+pixman-0.32.6-3.el7.x86_64
+pkgconfig-0.27.1-4.el7.x86_64
+plymouth-0.8.9-0.24.20140113.el7.centos.x86_64
+plymouth-core-libs-0.8.9-0.24.20140113.el7.centos.x86_64
+plymouth-scripts-0.8.9-0.24.20140113.el7.centos.x86_64
+policycoreutils-2.2.5-20.el7.x86_64
+policycoreutils-python-2.2.5-20.el7.x86_64
+polkit-0.112-7.el7_2.x86_64
+polkit-pkla-compat-0.1-4.el7.x86_64
+poppler-data-0.4.6-3.el7.noarch
+popt-1.13-16.el7.x86_64
+postfix-2.10.1-6.el7.x86_64
+ppp-2.4.5-33.el7.x86_64
+pprof-2.4-7.el7.noarch
+procps-ng-3.3.10-5.el7_2.x86_64
+pth-2.0.7-23.el7.x86_64
+pulseaudio-libs-6.0-7.el7.x86_64
+pygobject3-base-3.14.0-3.el7.x86_64
+pygpgme-0.3-9.el7.x86_64
+pyliblzma-0.5.3-11.el7.x86_64
+python-2.7.5-39.el7_2.x86_64
+python2-boto-2.43.0-1.el7.noarch
+python2-rsa-3.4.1-1.el7.noarch
+python-backports-1.0-8.el7.x86_64
+python-backports-ssl_match_hostname-3.4.0.2-4.el7.noarch
+python-chardet-2.2.1-1.el7_1.noarch
+python-cheetah-2.4.4-5.el7.centos.x86_64
+python-configobj-4.7.2-7.el7.noarch
+python-decorator-3.4.0-3.el7.noarch
+python-devel-2.7.5-39.el7_2.x86_64
+python-iniparse-0.4-9.el7.noarch
+python-IPy-0.75-6.el7.noarch
+python-jsonpatch-1.2-3.el7.centos.noarch
+python-jsonpointer-1.9-2.el7.noarch
+python-libs-2.7.5-39.el7_2.x86_64
+python-markdown-2.4.1-1.el7.centos.noarch
+python-perf-3.10.0-327.36.3.el7.x86_64
+python-pillow-2.0.0-19.gitd1c6db8.el7.x86_64
+python-pip-7.1.0-1.el7.noarch
+python-prettytable-0.7.2-2.el7.centos.noarch
+python-pyasn1-0.1.6-2.el7.noarch
+python-pycurl-7.19.0-17.el7.x86_64
+python-pygments-1.4-9.el7.noarch
+python-pyudev-0.15-7.el7_2.1.noarch
+python-requests-2.6.0-1.el7_1.noarch
+python-setuptools-0.9.8-4.el7.noarch
+python-six-1.9.0-2.el7.noarch
+python-slip-0.4.0-2.el7.noarch
+python-slip-dbus-0.4.0-2.el7.noarch
+python-urlgrabber-3.10-7.el7.noarch
+python-urllib3-1.10.2-2.el7_1.noarch
+python-virtualenv-1.10.1-2.el7.noarch
+pyxattr-0.5.1-5.el7.x86_64
+PyYAML-3.10-11.el7.x86_64
+qemu-img-ev-2.3.0-31.el7_2.21.1.x86_64
+qemu-kvm-common-ev-2.3.0-31.el7_2.21.1.x86_64
+qemu-kvm-ev-2.3.0-31.el7_2.21.1.x86_64
+qemu-kvm-ev-debuginfo-2.3.0-31.el7_2.21.1.x86_64
+qemu-kvm-tools-ev-2.3.0-31.el7_2.21.1.x86_64
+qrencode-libs-3.4.1-3.el7.x86_64
+quota-4.01-11.el7_2.1.x86_64
+quota-nls-4.01-11.el7_2.1.noarch
+rdma-7.2_4.1_rc6-2.el7.noarch
+readline-6.2-9.el7.x86_64
+rootfiles-8.1-11.el7.noarch
+rpcbind-0.2.0-33.el7_2.1.x86_64
+rpm-4.11.3-17.el7.x86_64
+rpm-build-libs-4.11.3-17.el7.x86_64
+rpm-libs-4.11.3-17.el7.x86_64
+rpm-python-4.11.3-17.el7.x86_64
+rsync-3.0.9-17.el7.x86_64
+rsyslog-7.4.7-12.el7.x86_64
+rsyslog-mmjsonparse-7.4.7-12.el7.x86_64
+seabios-bin-1.7.5-11.el7.noarch
+seavgabios-bin-1.7.5-11.el7.noarch
+sed-4.2.2-5.el7.x86_64
+selinux-policy-3.13.1-60.el7_2.9.noarch
+selinux-policy-targeted-3.13.1-60.el7_2.9.noarch
+setools-libs-3.3.7-46.el7.x86_64
+setup-2.8.71-6.el7.noarch
+sgabios-bin-0.20110622svn-4.el7.noarch
+shadow-utils-4.1.5.1-18.el7.x86_64
+shared-mime-info-1.1-9.el7.x86_64
+slang-2.2.4-11.el7.x86_64
+snappy-1.1.0-3.el7.x86_64
+spice-server-0.12.4-15.el7_2.2.x86_64
+sqlite-3.7.17-8.el7.x86_64
+strongswan-5.4.0-2.el7.x86_64
+sudo-1.8.6p7-17.el7_2.x86_64
+systemd-219-19.el7_2.13.x86_64
+systemd-libs-219-19.el7_2.13.x86_64
+systemd-sysv-219-19.el7_2.13.x86_64
+sysvinit-tools-2.88-14.dsf.el7.x86_64
+tar-1.26-29.el7.x86_64
+tcp_wrappers-7.6-77.el7.x86_64
+tcp_wrappers-libs-7.6-77.el7.x86_64
+trousers-0.3.13-1.el7.x86_64
+tuned-2.5.1-4.el7_2.6.noarch
+tzdata-2016h-1.el7.noarch
+unzip-6.0-15.el7.x86_64
+urw-fonts-2.4-16.el7.noarch
+usbredir-0.6-7.el7.x86_64
+ustr-1.0.4-16.el7.x86_64
+util-linux-2.23.2-26.el7_2.3.x86_64
+vim-minimal-7.4.160-1.el7.x86_64
+virt-what-1.13-6.el7.x86_64
+which-2.20-7.el7.x86_64
+wpa_supplicant-2.0-17.el7_1.x86_64
+xfsprogs-3.2.2-2.el7.x86_64
+xorg-x11-font-utils-7.5-20.el7.x86_64
+xz-5.1.2-12alpha.el7.x86_64
+xz-libs-5.1.2-12alpha.el7.x86_64
+yum-3.4.3-132.el7.centos.0.1.noarch
+yum-metadata-parser-1.1.4-10.el7.x86_64
+yum-plugin-fastestmirror-1.1.31-34.el7.noarch
+zlib-1.2.7-15.el7.x86_64
diff --git a/resources/tools/disk-image-builder/centos/lists/centos-7.3-1611_2016-12-26_1.1/pip-requirements.txt b/resources/tools/disk-image-builder/centos/lists/centos-7.3-1611_2016-12-26_1.1/pip-requirements.txt
new file mode 100644
index 0000000000..98d9851d75
--- /dev/null
+++ b/resources/tools/disk-image-builder/centos/lists/centos-7.3-1611_2016-12-26_1.1/pip-requirements.txt
@@ -0,0 +1,14 @@
+docopt==0.6.2
+ecdsa==0.13
+enum34==1.1.2
+interruptingcow==0.6
+ipaddress==1.0.16
+paramiko==1.16.0
+pycrypto==2.6.1
+pykwalify==1.5.0
+python-dateutil==2.4.2
+PyYAML==3.11
+requests==2.9.1
+robotframework==2.9.2
+scapy==2.3.1
+scp==0.10.2
diff --git a/resources/tools/disk-image-builder/centos/lists/centos-7.3-1611_2016-12-26_1.1/rpm-packages.txt b/resources/tools/disk-image-builder/centos/lists/centos-7.3-1611_2016-12-26_1.1/rpm-packages.txt
new file mode 100644
index 0000000000..506419bdfa
--- /dev/null
+++ b/resources/tools/disk-image-builder/centos/lists/centos-7.3-1611_2016-12-26_1.1/rpm-packages.txt
@@ -0,0 +1,51 @@
+bridge-utils
+cloud-init
+dkms
+git
+glusterfs
+glusterfs-api
+glusterfs-dev
+gperftools
+ipxe-roms-qemu
+java-1.8.0-openjdk-devel
+java-1.8.0-openjdk-headless
+libgfrpc
+libgfxdr
+libibverbs
+libiscsi
+libpcap
+libpcap-dev
+libpixman
+libpng14
+librados2
+librbd1
+librdmacm
+libseccomp
+libusb
+nfs-utils
+nss-devel
+openssl-devel
+pkgconfig
+pulseaudio-libs
+python-devel
+python-pip
+python-pip
+python-setuptools
+python-virtualenv
+seabios-bin
+seavgabios-bin
+sgabios-bin
+spice-server
+strongswan
+unzip
+usbredir
+yum-utils
+zlib1g-dev
+qemu-img-ev-2.3.0-31.el7_2.21.1.x86_64.rpm http://cbs.centos.org/kojifiles/packages/qemu-kvm-ev/2.3.0/31.el7_2.21.1/x86_64/
+libcacard-ev-2.3.0-31.el7_2.21.1.x86_64.rpm http://cbs.centos.org/kojifiles/packages/qemu-kvm-ev/2.3.0/31.el7_2.21.1/x86_64/
+libcacard-devel-ev-2.3.0-31.el7_2.21.1.x86_64.rpm http://cbs.centos.org/kojifiles/packages/qemu-kvm-ev/2.3.0/31.el7_2.21.1/x86_64/
+qemu-kvm-ev-debuginfo-2.3.0-31.el7_2.21.1.x86_64.rpm http://cbs.centos.org/kojifiles/packages/qemu-kvm-ev/2.3.0/31.el7_2.21.1/x86_64/
+qemu-kvm-tools-ev-2.3.0-31.el7_2.21.1.x86_64.rpm http://cbs.centos.org/kojifiles/packages/qemu-kvm-ev/2.3.0/31.el7_2.21.1/x86_64/
+qemu-kvm-common-ev-2.3.0-31.el7_2.21.1.x86_64.rpm http://cbs.centos.org/kojifiles/packages/qemu-kvm-ev/2.3.0/31.el7_2.21.1/x86_64/
+qemu-kvm-ev-2.3.0-31.el7_2.21.1.x86_64.rpm http://cbs.centos.org/kojifiles/packages/qemu-kvm-ev/2.3.0/31.el7_2.21.1/x86_64/
+libcacard-tools-ev-2.3.0-31.el7_2.21.1.x86_64.rpm http://cbs.centos.org/kojifiles/packages/qemu-kvm-ev/2.3.0/31.el7_2.21.1/x86_64/
diff --git a/resources/tools/disk-image-builder/centos/nested/NO-NESTED b/resources/tools/disk-image-builder/centos/nested/NO-NESTED
new file mode 100644
index 0000000000..7bc6d0ecf4
--- /dev/null
+++ b/resources/tools/disk-image-builder/centos/nested/NO-NESTED
@@ -0,0 +1,8 @@
+NESTED_VERSION=NO_NESTED
+
+This is a placeholder file to be placed on the main VM if nested VM
+testing is not desired, or if the main VM is going to overwrite the
+nested VM image by means of startup scripts.
+
+Unless separate steps are taken to provide a valid image within the
+VM, NESTED VM TESTCASES WILL FAIL.
diff --git a/resources/tools/disk-image-builder/centos/run-listmaker.sh b/resources/tools/disk-image-builder/centos/run-listmaker.sh
new file mode 100755
index 0000000000..4733ef40d8
--- /dev/null
+++ b/resources/tools/disk-image-builder/centos/run-listmaker.sh
@@ -0,0 +1,222 @@
+#!/bin/bash
+
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This script is to spin up a simulation in VIRL, and fetch the URLs for all packages
+# that the user would obtain if they did an "yum update" today.
+#
+# This entire step is neither secure nor portable. The assumption --for now-- is that
+# this will only ever be run in LF CSIT VIRL lab. Should the requirement arise to
+# run this elsewhere, then additional work may be required to make this more
+# portable.
+
+# This script requires that the following two environment variables be defined-
+#
+# $VIRL_USER
+# $VIRL_PASSWORD
+
+VERSION=$(cat $(dirname $0)/CHANGELOG | grep '^## ' | head -1 | sed -e 's/.*\[\(.*\)\].*/\1/')
+if [ "${VERSION}" = "" ]
+then
+ echo "Unable to determine build version from CHANGELOG file. Make sure"
+ echo "that there is an entry for the most recent version in CHANGELOG,"
+ echo "and that the entry is formated like"
+ echo
+ echo "## [1.0] - 2016-05-20"
+ exit 1
+fi
+DATE=$(date +%Y-%m-%d)
+
+if [ "$1" == "centos-7-1511" ]
+then
+ OS="centos-7-1511"
+ VIRL_TOPOLOGY_FILE="listmaker/virl-listmaker-centos-7-1511.yaml"
+elif [ "$1" == "centos-7.3-1611" ]
+then
+ OS="centos-7.3-1611"
+ VIRL_TOPOLOGY_FILE="listmaker/virl-listmaker-centos-7.3-1611.yaml"
+else
+ echo specify argument -- probably centos-7-1511 or centos-7.3-1611
+ exit 1
+fi
+
+RELEASE="${OS}_${DATE}_${VERSION}"
+OUTPUT_DIR="lists/${RELEASE}"
+
+echo "Building release ${RELEASE}."
+echo "Storing data in ${OUTPUT_DIR}/."
+
+
+# RPM packages wanted
+
+RPM_WANTLIST_INFRA="nfs-utils cloud-init pkgconfig yum-utils"
+RPM_WANTLIST_CSIT="python-devel python-pip python-virtualenv python-setuptools python-pip openssl-devel git strongswan"
+RPM_WANTLIST_VPP="dkms bridge-utils"
+RPM_WANTLIST_TREX="zlib1g-dev unzip"
+RPM_WANTLIST_MISC="gperftools glusterfs glusterfs-api libiscsi libibverbs libpcap libpcap-dev libgfrpc libgfxdr libpixman libpng14 pulseaudio-libs librados2 librbd1 librdmacm libseccomp spice-server libusb usbredir glusterfs-dev seavgabios-bin sgabios-bin ipxe-roms-qemu nss-devel seabios-bin"
+
+RPM_WANTLIST_NESTED="qemu-img-ev-2.3.0-31.el7_2.21.1.x86_64.rpm libcacard-ev-2.3.0-31.el7_2.21.1.x86_64.rpm libcacard-devel-ev-2.3.0-31.el7_2.21.1.x86_64.rpm qemu-kvm-ev-debuginfo-2.3.0-31.el7_2.21.1.x86_64.rpm qemu-kvm-tools-ev-2.3.0-31.el7_2.21.1.x86_64.rpm qemu-kvm-common-ev-2.3.0-31.el7_2.21.1.x86_64.rpm qemu-kvm-ev-2.3.0-31.el7_2.21.1.x86_64.rpm libcacard-tools-ev-2.3.0-31.el7_2.21.1.x86_64.rpm"
+RPM_WANTLIST_JAVA="java-1.8.0-openjdk-headless java-1.8.0-openjdk-devel"
+#RPM_WANTLIST_DOCKER="docker-engine"
+
+### For now, do not include WANTLIST_NESTED in the main list. We're installing qemu
+### separately because of the possible need for specific versions but the supported version seem to be ok for Centos 7.3
+##
+RPM_WANTLIST="$RPM_WANTLIST_INFRA $RPM_WANTLIST_CSIT $RPM_WANTLIST_VPP $RPM_WANTLIST_TREX $RPM_WANTLIST_MISC $RPM_WANTLIST_JAVA"
+
+RPM_OUTPUTFILE="${OUTPUT_DIR}/rpm-packages.txt"
+
+# Python requirements file. Can point to a manually crafted file
+# here, or to the actual CSIT requirements file, or to a symlink.
+
+PIP_REQUIREMENTS="../../../../requirements.txt"
+if [ ! -f ${PIP_REQUIREMENTS} ]
+then
+ echo "PIP requirements file ${PIP_REQUIREMENTS} not found."
+ exit 1
+fi
+
+PIP_OUTPUTFILE="${OUTPUT_DIR}/pip-requirements.txt"
+
+# These will be used for SSH to the listmaker VM, and must match with what
+# was defined in the listmaker VM's kickstart file.
+SSH_USER="root"
+SSH_PASS="csit"
+
+###
+### Spin up simulation
+###
+if [ "$VIRL_USER" = "" ] || [ "$VIRL_PASSWORD" = "" ]
+then
+ echo '$VIRL_USER and $VIRL_PASSWORD environment variables must be defined'
+ exit 1
+fi
+
+output=$(virl_std_client -u ${VIRL_USER} -p ${VIRL_PASSWORD} \
+ simengine-launch -f ${VIRL_TOPOLOGY_FILE} 2>&1)
+id=$(echo "${output}" | grep "Simulation ID is " | cut -f 4 -d ' ')
+
+if [ "$id" = "" ]
+then
+ echo "Did not get a simulation ID. Aborting."
+ echo "Output was:"
+ echo "${output}"
+ exit 1
+fi
+
+echo My ID is ${id}
+function stop_sim {
+ virl_std_client -u ${VIRL_USER} -p ${VIRL_PASSWORD} simengine-stop --session ${id}
+}
+trap stop_sim EXIT
+
+ip="None"
+while [ "${ip}" = "None" ] || [ "${ip}" = "" ]
+do
+ sleep 5
+ output=$(virl_std_client -u ${VIRL_USER} -p ${VIRL_PASSWORD} simengine-interfaces --session ${id} --nodes listmaker --interfaces management 2>&1)
+ ip=$(echo "${output}" | grep "u'ip-address" | cut -f 4 -d "'" | cut -f 1 -d '/')
+done
+echo "IP is $ip"
+
+sleep 10
+
+if ping -w 60 -c 2 $ip > /dev/null
+then
+ echo Host $ip alive
+else
+ echo Host $ip failed to respond to ping
+ exit 1
+fi
+
+# Wait for SSH to be up
+while ! nc -z $ip 22
+do
+ sleep 3
+done
+
+if [ ! -d ${OUTPUT_DIR} ]; then
+ mkdir -p $OUTPUT_DIR
+fi
+
+###
+### SSH to the VM and perform package installation. Before each step,
+### dry-run and grab the URLs of the packages that would be installed.
+###
+
+function do_ssh {
+ # Helper function: SSH and avoid password prompt
+ sshpass -p $SSH_PASS ssh -o StrictHostKeyChecking=false -o UserKnownHostsFile=/dev/null \
+ -o LogLevel=error ${SSH_USER}@${ip} "$@"
+}
+
+RPM_TEMPFILE=$(mktemp)
+RPM_TEMPFILE2=$(mktemp)
+RPM_URL_TEMPFILE=$(mktemp)
+do_ssh yum clean all
+do_ssh yum install -y @base
+do_ssh yum install -y deltarpm
+do_ssh yum update -y
+do_ssh yum -y install epel-release
+do_ssh yum update -y
+do_ssh yum -y install $RPM_WANTLIST
+for i in ${RPM_WANTLIST} ; do
+ echo $i >> $RPM_TEMPFILE
+done
+
+###
+### Install qemu ($RPM_WANTLIST_NESTED) separately from PPA in case specific versions are required.
+###
+for i in ${RPM_WANTLIST_NESTED}; do
+ echo $i http://cbs.centos.org/kojifiles/packages/qemu-kvm-ev/2.3.0/31.el7_2.21.1/x86_64/ >> $RPM_URL_TEMPFILE
+done
+###
+### Try 2 times for dependencies. Not in yum repo so it is not automatic"
+###
+for i in ${RPM_WANTLIST_NESTED}; do
+ do_ssh rpm -i http://cbs.centos.org/kojifiles/packages/qemu-kvm-ev/2.3.0/31.el7_2.21.1/x86_64/$i
+done
+for i in ${RPM_WANTLIST_NESTED}; do
+ do_ssh rpm -i http://cbs.centos.org/kojifiles/packages/qemu-kvm-ev/2.3.0/31.el7_2.21.1/x86_64/$i
+done
+
+
+cat $RPM_TEMPFILE | sort > $RPM_TEMPFILE2
+rm -f $RPM_TEMPFILE
+cat $RPM_TEMPFILE2 > $RPM_OUTPUTFILE
+cat $RPM_URL_TEMPFILE >> $RPM_OUTPUTFILE
+rm -f $RPM_TEMPFILE2
+rm -f $RPM_URL_TEMPFILE
+
+### Get Python data. We do this by installing as per our
+### requirements.txt file while fetching a list of all
+### installed modules before and after, and then comparing.
+
+PIP_TEMPFILE_BEFORE=$(mktemp)
+PIP_TEMPFILE_AFTER=$(mktemp)
+do_ssh "cat - > /tmp/requirements.txt" < ${PIP_REQUIREMENTS}
+do_ssh pip list | sort > $PIP_TEMPFILE_BEFORE
+do_ssh pip install -r /tmp/requirements.txt
+do_ssh pip list | sort > $PIP_TEMPFILE_AFTER
+
+comm -1 -3 ${PIP_TEMPFILE_BEFORE} ${PIP_TEMPFILE_AFTER} | \
+ sed -e 's/\(.*\) (\(.*\))/\1==\2/' > $PIP_OUTPUTFILE
+rm -f $PIP_TEMPFILE_BEFORE
+rm -f $PIP_TEMPFILE_AFTER
+
+###
+### Stop VIRL session
+###
+virl_std_client -u ${VIRL_USER} -p ${VIRL_PASSWORD} simengine-stop --session ${id}
+trap "" EXIT
diff --git a/resources/tools/disk-image-builder/centos/scripts-local/upload-image-to-virl.sh b/resources/tools/disk-image-builder/centos/scripts-local/upload-image-to-virl.sh
new file mode 100755
index 0000000000..9239356653
--- /dev/null
+++ b/resources/tools/disk-image-builder/centos/scripts-local/upload-image-to-virl.sh
@@ -0,0 +1,71 @@
+#!/bin/sh
+
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+if [ "$1" = "" ]
+then
+ echo "Syntax: $0 <path to image file>"
+ echo
+ echo "Environment variables that are required:"
+ echo " VIRL_USER, VIRL_PASSWORD - VIRL username and password"
+ echo " VIRL_IMAGE_SUBTYPE - Image subtype to use (most likely 'server')"
+ echo " VIRL_IMAGE_NAME - The intended name for the image in VIRL"
+ exit 1
+fi
+
+VIRL_IMAGE_FILE=$1
+
+if [ "$VIRL_USER" = "" ] || [ "$VIRL_PASSWORD" = "" ]
+then
+ echo "VIRL user or password not defined, not uploading image to VIRL."
+ echo "Define VIRL_USER and VIRL_PASSWORD environment variables if image upload"
+ echo "to VIRL is intended."
+ exit 0
+fi
+
+if [ "$VIRL_IMAGE_SUBTYPE" = "" ] || [ "$VIRL_IMAGE_NAME" = "" ]
+then
+ echo "VIRL_IMAGE_SUBTYPE, VIRL_IMAGE_NAME must both be defined"
+ echo "variables must all be set."
+ exit 1
+fi
+
+if [ ! -f $VIRL_IMAGE_FILE ]
+then
+ echo "VIRL image file $VIRL_IMAGE_FILE not found"
+ exit 1
+fi
+
+echo Uploading file $VIRL_IMAGE_FILE to VIRL
+echo as $VIRL_IMAGE_NAME
+
+export VIRL_IMAGE_NAME
+
+existing_image_id=$(virl_uwm_client --quiet -u ${VIRL_USER} -p ${VIRL_PASSWORD} \
+ image-info | \
+ grep -E "^ u'name'|^ u'id'" | \
+ grep -B 1 "u'${VIRL_IMAGE_SUBTYPE}-${VIRL_IMAGE_NAME}'" | \
+ grep -E "^ u'id'" | \
+ cut -f 4 -d "'")
+
+if [ "${existing_image_id}" = "" ]
+then
+ echo Image does not exist yet
+else
+ echo Image exists with ID $existing_image_id
+ virl_uwm_client --quiet -u ${VIRL_USER} -p ${VIRL_PASSWORD} image-delete \
+ --id ${existing_image_id}
+fi
+
+virl_uwm_client -u ${VIRL_USER} -p ${VIRL_PASSWORD} image-create --subtype ${VIRL_IMAGE_SUBTYPE} --version ${VIRL_IMAGE_NAME} --image-on-server ${VIRL_IMAGE_FILE}
diff --git a/resources/tools/disk-image-builder/centos/scripts-remote/cleanup.sh b/resources/tools/disk-image-builder/centos/scripts-remote/cleanup.sh
new file mode 100644
index 0000000000..850c6958fb
--- /dev/null
+++ b/resources/tools/disk-image-builder/centos/scripts-remote/cleanup.sh
@@ -0,0 +1,37 @@
+#!/bin/sh -e
+
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+echo "********** CLEANING UP **********"
+
+# Clean up host keys only if we're using cloud-init
+# (which will generate new keys upon next boot). This
+# currently applies to Qemu build only.
+
+if dpkg -s cloud-init > /dev/null 2>&1
+then
+ rm -f /etc/ssh/ssh_host_*
+fi
+
+# Remove root's password, old resolv.conf and DHCP lease
+passwd -d root
+passwd -l root
+rm -f /etc/resolv.conf
+pkill dhclient
+rm -f /var/lib/dhcp/*leases
+
+echo "********** SCHEDULING SHUTDOWN IN 1 MINUTE **********"
+sync
+shutdown -h +1
+exit
diff --git a/resources/tools/disk-image-builder/centos/scripts-remote/post-install.sh b/resources/tools/disk-image-builder/centos/scripts-remote/post-install.sh
new file mode 100644
index 0000000000..9ae1608203
--- /dev/null
+++ b/resources/tools/disk-image-builder/centos/scripts-remote/post-install.sh
@@ -0,0 +1,104 @@
+#!/bin/sh -e
+
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+TEMP_PATH="/root/temp"
+
+###
+### RPMs
+###
+echo "********** INSTALLING RPMs **********"
+
+# We're doing this the hard way as we're dealing with a bunch of
+# rpm packages without using yum.
+
+# Attempt up to five cycles of unpack/configure. There may be dependency
+# problems during the first one(s).
+echo ==========================yum update==============================
+yum clean all
+yum install -y @base
+yum install -y deltarpm
+yum update -y
+yum -y install epel-release
+yum update -y
+echo ==========================end yum update==============================
+attempt=1
+MAX_ATTEMPTS=3
+try_again=1
+
+RPM_FILE=${TEMP_PATH}/rpm/rpm-packages.txt
+while [ $attempt -le $MAX_ATTEMPTS ] && [ $try_again -eq 1 ]
+do
+ try_again=0
+ while read name url
+ do
+ # use rpm command if url is present in the package file
+ if [ ! -z $url ] ; then
+ rpm -i $url$name || try_again=1
+ else
+ yum install -y $name || try_again=1
+ fi
+ done < $RPM_FILE
+ attempt=$(( $attempt + 1 ))
+done
+
+if [[ ( $try_again == 1 ) ]]
+then
+ echo "Still encountered errors after ${MAX_ATTEMPTS} attempts."
+fi
+
+##
+## PIP
+##
+echo "********** INSTALLING PIP PACKAGES **********"
+pip install --no-index --find-links ${TEMP_PATH}/pip/ -r ${TEMP_PATH}/requirements.txt
+
+
+echo "********** CREATING HISTORIC LINK FOR QEMU, COPY NESTED VM IMAGE **********"
+mkdir -p /opt/qemu/bin
+ln -s /usr/bin/qemu-system-x86_64 /opt/qemu/bin/qemu-system-x86_64
+
+mkdir -p /var/lib/vm
+
+echo "Embedding nested VM image on this image"
+mkdir /var/lib/vm/images
+cp ${TEMP_PATH}/nested-vm/* /var/lib/vm/images/
+# There should only be one file at this time
+ln -s /var/lib/vm/images/* /var/lib/vm/vhost-nested.img
+
+ls -lR /var/lib/vm
+
+# Mount hugepages directory for nested VM
+mkdir -p /mnt/huge
+echo 'hugetlbfs /mnt/huge hugetlbfs mode=1770,gid=111 0 0' >> /etc/fstab
+
+##
+## Java
+##
+echo "********** CREATING JAVA SHELL PROFILE **********"
+mkdir -p /etc/profile.d
+echo 'export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64' > /etc/profile.d/java.sh
+echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile.d/java.sh
+
+
+##
+## Changelog
+##
+echo "********** MOVING CHANGELOG AND VERSION FILES **********"
+
+mv ${TEMP_PATH}/VERSION /
+mv ${TEMP_PATH}/CHANGELOG /
+
+echo "********** CLEANING UP **********"
+rm -fr ${TEMP_PATH}
diff --git a/resources/tools/disk-image-builder/centos/scripts-remote/serial-console-centos-7-1511.sh b/resources/tools/disk-image-builder/centos/scripts-remote/serial-console-centos-7-1511.sh
new file mode 100644
index 0000000000..457e77cdee
--- /dev/null
+++ b/resources/tools/disk-image-builder/centos/scripts-remote/serial-console-centos-7-1511.sh
@@ -0,0 +1,89 @@
+#!/bin/sh -e
+
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+##
+## Serial console
+##
+echo "********** CONFIGURING SERIAL CONSOLE AND DISABLING IPV6 **********"
+cat - > /etc/systemd/system/serial-getty-digi@.service <<"_EOF"
+# ttyS0 - getty
+#
+# This service maintains a getty on ttyS0 from the point the system is
+# started until it is shut down again.
+# This file is part of systemd.
+#
+# systemd is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2.1 of the License, or
+# (at your option) any later version.
+
+[Unit]
+Description=Serial Getty on %I
+Documentation=man:agetty(8) man:systemd-getty-generator(8)
+Documentation=http://0pointer.de/blog/projects/serial-console.html
+BindsTo=dev-%i.device
+After=dev-%i.device systemd-user-sessions.service plymouth-quit-wait.service
+After=rc-local.service
+
+# If additional gettys are spawned during boot then we should make
+# sure that this is synchronized before getty.target, even though
+# getty.target didn't actually pull it in.
+Before=getty.target
+IgnoreOnIsolate=yes
+
+[Service]
+ExecStart=-/sbin/agetty -L %I 115200
+Type=idle
+Restart=always
+UtmpIdentifier=%I
+TTYPath=/dev/%I
+TTYReset=yes
+TTYVHangup=yes
+KillMode=process
+IgnoreSIGPIPE=no
+SendSIGHUP=yes
+
+[Install]
+WantedBy=getty.target
+_EOF
+
+cat - > /etc/default/grub <<"_EOF"
+# If you change this file, run 'update-grub' afterwards to update
+# /boot/grub/grub.cfg.
+# For full documentation of the options in this file, see:
+# info -f grub -n 'Simple configuration'
+
+GRUB_DEFAULT=0
+GRUB_TIMEOUT=5
+GRUB_DISABLE_SUBMENU=true
+GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
+GRUB_CMDLINE_LINUX="rhgb quiet console=tty0 console=ttyS0,115200n8 ipv6.disable=1"
+
+GRUB_TERMINAL=serial
+GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
+
+# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
+#GRUB_DISABLE_LINUX_UUID=true
+
+# Uncomment to disable generation of recovery mode menu entries
+#GRUB_DISABLE_RECOVERY="true"
+
+# Uncomment to get a beep at grub start
+#GRUB_INIT_TUNE="480 440 1"
+_EOF
+
+grub2-mkconfig -o /boot/grub2/grub.cfg
+sudo systemctl enable serial-getty-digi@ttyS0.service
+sudo systemctl start serial-getty-digi@ttyS0.service
diff --git a/resources/tools/disk-image-builder/centos/scripts-remote/vagrant-guestadditions.sh b/resources/tools/disk-image-builder/centos/scripts-remote/vagrant-guestadditions.sh
new file mode 100644
index 0000000000..ec1c064437
--- /dev/null
+++ b/resources/tools/disk-image-builder/centos/scripts-remote/vagrant-guestadditions.sh
@@ -0,0 +1,22 @@
+#!/bin/sh -e
+
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+echo "********** Installing VirtualBox Guest Additions (sigh) **********"
+mkdir /mnt/VBoxGuestAdditions
+mount VBoxGuestAdditions.iso /mnt/VBoxGuestAdditions/
+/mnt/VBoxGuestAdditions/VBoxLinuxAdditions.run
+umount /mnt/VBoxGuestAdditions
+rmdir /mnt/VBoxGuestAdditions/
+rm -f VBoxGuestAdditions.iso
diff --git a/resources/tools/disk-image-builder/centos/scripts-remote/vagrant-user.sh b/resources/tools/disk-image-builder/centos/scripts-remote/vagrant-user.sh
new file mode 100644
index 0000000000..31ef17f147
--- /dev/null
+++ b/resources/tools/disk-image-builder/centos/scripts-remote/vagrant-user.sh
@@ -0,0 +1,40 @@
+#!/bin/sh -e
+
+# Copyright (c) 2016 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+echo "********** Adding Vagrant user ***********"
+# Remove cloud-init as this will slow down the Vagrant boot
+export DEBIAN_FRONTEND=noninteractive
+apt-get purge -y cloud-init
+
+# Add Vagrant user
+useradd -c "Vagrant User" -m -s /bin/bash vagrant
+
+mkdir /home/vagrant/.ssh
+cat - > /home/vagrant/.ssh/authorized_keys <<_EOF
+ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key
+_EOF
+
+chown -R vagrant.vagrant /home/vagrant/.ssh
+chmod 700 /home/vagrant/.ssh
+
+mkdir -p /etc/sudoers.d
+cat - > /etc/sudoers.d/vagrant <<_EOF
+vagrant ALL=(root) NOPASSWD:ALL
+_EOF
+chmod 440 /etc/sudoers.d/vagrant
+
+echo "********** Rebooting with new kernel **********"
+reboot
+sleep 60