diff options
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/init-respin-env.sh | 146 | ||||
-rwxr-xr-x | scripts/respin-jcloud-images.sh | 48 | ||||
-rw-r--r-- | scripts/setup-vagrant.sh | 43 |
3 files changed, 179 insertions, 58 deletions
diff --git a/scripts/init-respin-env.sh b/scripts/init-respin-env.sh new file mode 100644 index 000000000..6ecfe8363 --- /dev/null +++ b/scripts/init-respin-env.sh @@ -0,0 +1,146 @@ +#!/bin/bash + +# Copyright 2016 The Linux Foundation + +set -e + +vagrant_version=1.8.1 +ruby_version=2.1.5 +ruby_patch=https://gist.github.com/mislav/055441129184a1512bb5.txt +rbenv_git=https://github.com/rbenv/rbenv.git + +PVENAME="${CPPROJECT}-openstack" +PVE_PATH="${PVE_ROOT}/${PVENAME}" +PVERC=${PVE_PATH}/bin/activate +PVE_BINDIR=$(dirname $PVERC) +PVE_ROOT="${HOME}/src/python-virtual" + +LOCAL_LIB="${HOME}/src/local-lib" +LL_LIBDIR="${LOCAL_LIB}/lib" + +RH_ARCH64=x86_64 +RH_ARCH32=i686 +DEB_ARCH64=amd64 +DEB_ARCH32=i386 +LV_IMG_DIR=/var/lib/libvirt/images/ +SRC_TIMESTAMP="" +DST_TIMESTAMP="" + +init_virtualenv +init_rbenv +init_ruby +select_ruby ${ruby_version} +init_virtualenv +init_vagrant +install_vagrant_plugins +import_vagrant_box +init_local_lib +init_javascript + +function init_virtualenv () +{ + test -d ${PVE_BINDIR} && return 0 + + if [ -f /etc/debian_version ] + then + sudo apt-get -y -qq install virtualenvwrapper python-virtualenv libpython-dev + elif [ -f /etc/redhat-release ] + then + sudo yum -y install python-virtualenv + fi + + mkdir -p ${PVE_PATH} + virtualenv ${PVE_PATH} + + echo "Please copy all OS_* variables from https://secure.vexxhost.com/console/#/account/credentials to the end of ${PVERC}" + echo "Press enter when finished" + read +} + +function init_local_lib () +{ + test -d ${LL_LIBDIR} && return 0 + + echo "local lib init incomplete" +} + +function init_javascript () +{ + which js && which jq && return 0 + + if [ -f /etc/debian_version ] + then + sudo apt-get -y -qq install nodejs jq + elif [ -f /etc/redhat-release ] + then + sudo yum -y install nodejs jq + fi +} + +function init_vagrant () +{ + which vagrant && return 0 + + vagrant_pkg_name=vagrant_${vagrant_version}_x86_64.deb + vagrant_pkg=https://releases.hashicorp.com/vagrant/${vagrant_version}/${vagrant_pkg_name} + + wget -c ${vagrant_pkg} + sudo dpkg -i ${vagrant_pkg_name} +} + +function init_rbenv () +{ + which rbenv && return 0 + + # clone rbenv + test -d ~/.rbenv/.git || git clone ${rbenv_git} ~/.rbenv + + # clone ruby-build + mkdir -p ~/.rbenv/plugins + test -d ~/.rbenv/plugins/ruby-build/.git || git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build + + # build ruby-build + cd ~/.rbenv && src/configure && make -C src + + # Add rbenv to bashrc + grep HOME/.rbenv/bin ~/.bash_profile || echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile + + # Add rbenv to current environment + export PATH="$HOME/.rbenv/bin:$PATH" +} + +function init_ruby () +{ + # Install ruby build deps + sudo apt-get build-dep ruby + #sudo apt-get -y install \ + # autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev \ + # zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev + + # Build ruby + curl -fsSL ${ruby_patch} | rbenv install --patch ${ruby_version} +} + +function select_ruby () +{ + # Select ruby ${ruby_version} from rbenv + rbenv local ${1} + rbenv global ${1} +} + +function install_vagrant_plugins () +{ + for plugin in vagrant-openstack-provider vagrant-cachier vagrant-mutate + do + vagrant plugin install ${plugin} + done +} + +function import_vagrant_box () +{ + # Add dummy box + vagrant box add dummy https://github.com/huit/vagrant-openstack/blob/master/dummy.box + + cp ${CI_MGMT}/vagrant/examples/box/dummy/Vagrantfile ~/.vagrant.d/boxes/dummy/0/openstack/ +} + diff --git a/scripts/respin-jcloud-images.sh b/scripts/respin-jcloud-images.sh index 64a5c92f3..2af9e4c1b 100755 --- a/scripts/respin-jcloud-images.sh +++ b/scripts/respin-jcloud-images.sh @@ -1,25 +1,43 @@ #!/bin/bash - +# Copyright 2016 The Linux Foundation set -e +SUPPORTED_PLATFORMS=( + 'Ubuntu 14.04 amd64' + 'Ubuntu 16.04 amd64' + 'CentOS 7 x86_64' +) + CI_MGMT=$(realpath $(dirname $(realpath $0))/..) -# Copyright 2016 The Linux Foundation <cjcollier@linuxfoundation.org> source ${CI_MGMT}/vagrant/lib/respin-functions.sh +source ${PVERC} + +echo nova: $(which nova) + +export NETID=${NETID:-$(nova network-list | awk "/${CPPROJECT}/ {print \$2}")} + +for PLATFORM in "${SUPPORTED_PLATFORMS[@]}" +do + read -ra DVA <<< "${PLATFORM}" + DIST="${DVA[0]}" + VERSION="${DVA[1]}" + ARCH="${DVA[2]}" + DTYPE=$(dist_type ${DIST}) -source ${PVE_PATH}/bin/activate + AGE_JSON=$(latest_src_age ${DIST} ${VERSION} ${ARCH}); -# Acquire bootstrap images -#download_deb_image 'Ubuntu' '14.04' 'amd64' -#download_deb_image 'Ubuntu' '16.04' 'amd64' -#download_rh_image 'CentOS' '7' 'x86_64' + # only fetch new base image if our latest one is more than two weeks old + if [ $(echo ${AGE_JSON} | jq .week) -ge "3" ] + then + # Acquire bootstrap images + download_${DTYPE}_image "${DIST}" "${VERSION}" "${ARCH}" -# Push images to openstack via glance -#create_deb_image 'Ubuntu' '14.04' 'amd64' -#create_deb_image 'Ubuntu' '16.04' 'amd64' -#create_rh_image 'CentOS' '7' 'x86_64' + # Push images to openstack via glance + create_${DTYPE}_image "${DIST}" "${VERSION}" "${ARCH}" + fi -# Respin images -respin_deb_image 'Ubuntu' '14.04' 'amd64' -respin_deb_image 'Ubuntu' '16.04' 'amd64' -respin_rh_image 'CentOS' '7' 'x86_64' + # Respin images + cd ${CI_MGMT}/vagrant/basebuild + respin_${DTYPE}_image "${DIST}" "${VERSION}" "${ARCH}" +done diff --git a/scripts/setup-vagrant.sh b/scripts/setup-vagrant.sh deleted file mode 100644 index b7145d49a..000000000 --- a/scripts/setup-vagrant.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash - -set -e - -# fetch and install vagrant package -vagrant_version=1.8.1 -vagrant_pkg_name=vagrant_${vagrant_version}_x86_64.deb -vagrant_pkg=https://releases.hashicorp.com/vagrant/${vagrant_version}/${vagrant_pkg_name} -wget -c $vagrant_pkg -sudo dpkg -i $vagrant_pkg_name - -# clone rbenv -test -d ~/.rbenv/.git || git clone https://github.com/rbenv/rbenv.git ~/.rbenv - -# clone ruby-build -mkdir -p ~/.rbenv/plugins -test -d ~/.rbenv/plugins/ruby-build/.git || git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build - -# build ruby-build -cd ~/.rbenv && src/configure && make -C src - -# Add rbenv to bashrc -echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile - -# Add rbenv to current environment -export PATH="$HOME/.rbenv/bin:$PATH" - -# Install ruby build deps -sudo apt-get build-dep ruby2.3 -#sudo apt-get -y install \ -# autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev \ -# zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev - -# Build ruby 2.1.5 -curl -fsSL https://gist.github.com/mislav/055441129184a1512bb5.txt | rbenv install --patch 2.1.5 - -# Select ruby 2.1.5 from rbenv -rbenv local 2.1.5 -rbenv global 2.1.5 - -# Add dummy box -vagrant box add dummy https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box -cp ${CIADM_DIR}/vagrant/examples/box/dummy/Vagrantfile ~/.vagrant.d/boxes/dummy/0/openstack/ |