From: Thomas F Herbert Date: Tue, 15 Nov 2016 23:59:48 +0000 (-0500) Subject: Add Centos 7 image to CSIT. X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=commitdiff_plain;h=7af34879d4c2a0c0994d93ded5d9a686c860e8da Add Centos 7 image to CSIT. JIRA: CSIT-256 JIRA: CSIT-490 libpcap and Qemu version 2.3.0 Centos 7.3 support added from 7.3.1611 base image. Change-Id: Ia4ebe22980206cade4beb87760a455ca18f9fbfc Signed-off-by: Thomas F Herbert --- 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 ' + echo + echo ': Base distro, eg. ubuntu-14.04.4' + echo ': Release timestamp, eg. 2016-05-21' + echo ': 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": + [ + " text ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/ks.cfg" + ] + }, + { + "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": + [ + " text ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/ks.cfg" + ] + } + ], + "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": + [ + " text ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/ks.cfg" + ] + }, + { + "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": + [ + " text ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/ks.cfg" + ] + } + ], + "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": + [ + " text ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/ks.cfg" + ] + } + ], + "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": + [ + " text ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/ks.cfg" + ] + } + ], + "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 @@ + + + + flat + + + + UNUSED + false + + + 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 @@ + + + + flat + + + + UNUSED + false + + + 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 " + 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