Refactor baseline vagrant image 23/26123/1
authorAndrew Grimberg <agrimberg@linuxfoundation.org>
Thu, 27 Aug 2015 23:37:33 +0000 (16:37 -0700)
committerAndrew Grimberg <agrimberg@linuxfoundation.org>
Thu, 27 Aug 2015 23:37:33 +0000 (16:37 -0700)
Rename the baseline image from rackspace-convert-base to just baseline
to help inform that this is the baseline image that should be run on a
new image type in the Rackspace environment to prepare for further
Vagrant layers.

This Vagrant now supports preparing RedHat flavors as well as Ubuntu.

Change-Id: I67ad99f205e48b53f7f8d75640080a4fcc0ac719
Signed-off-by: Andrew Grimberg <agrimberg@linuxfoundation.org>
vagrant/baseline/README.md [moved from vagrant/rackspace-convert-base/README.md with 55% similarity]
vagrant/baseline/Vagrantfile [moved from vagrant/rackspace-convert-base/Vagrantfile with 95% similarity]
vagrant/baseline/bootstrap.sh [new file with mode: 0644]
vagrant/baseline/remove_requiretty.sh [moved from vagrant/rackspace-convert-base/remove_requiretty.sh with 100% similarity]
vagrant/baseline/system_reseal.sh [moved from vagrant/rackspace-convert-base/system_reseal.sh with 100% similarity]
vagrant/rackspace-convert-base/bootstrap.sh [deleted file]

similarity index 55%
rename from vagrant/rackspace-convert-base/README.md
rename to vagrant/baseline/README.md
index 974f5be31f9f3a61bd6ec98d1d42fbdbaffbcd2d..1ef1e722404cf0f9bdbbbb3c4847520cc893ba56 100644 (file)
@@ -1,7 +1,12 @@
-rackspace-convert-base can be used to convert a RackSpace native base
-image into a Vagrant compatible one. The default image to convert is the
-'Fedora 20 (Heisenbug) (PVHVM)' image but this can be overridden just by
-setting the RSIMAGE environment variable before calling the vagrant up.
+basline can be used to prepare systems in the Rackspace (or potentially
+other environments) for following vagrant layers.
+
+While the base image that is looked for is
+'Fedora 20 (Heisenbug) (PVHVM)' which is no longer even offered, the
+variable is being left in place so to prompt selection of a proper base
+image to spin up against.
+
+This is controlled by the RSIMAGE environment variable
 
 ex:
 
@@ -24,3 +29,7 @@ CentOS 7 - Vagrant ready
 NOTE: The reseal operation _destroys_ the SSH keys that were used to
 bring the Vagrant system up effectively making the system unable to
 perform SSH based logins again. This is intentional.
+
+If you are bringing up an Ubuntu system you _must_ also set
+RSPTY='default' or the bring up will hang indefinitely during the OS
+upgrade phase.
similarity index 95%
rename from vagrant/rackspace-convert-base/Vagrantfile
rename to vagrant/baseline/Vagrantfile
index fdcd9a51140379bdf5507a6def6f12b59c22ab1a..dd09c1b48e15f0e41eec20cb2ddded2056e81351 100644 (file)
@@ -15,7 +15,11 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
   config.ssh.username = 'root'
   
   # Fedora and EL systems default to requiring a tty for sudo
-  config.ssh.pty = true
+  if (ENV['RSPTY'] == 'default')
+    config.ssh.pty = false
+  else
+    config.ssh.pty = true
+  end
 
   # The rackspace provider by default tries to rsync
   # the local folder / vagrant box to /vagrant
diff --git a/vagrant/baseline/bootstrap.sh b/vagrant/baseline/bootstrap.sh
new file mode 100644 (file)
index 0000000..2eb7a3c
--- /dev/null
@@ -0,0 +1,127 @@
+#!/bin/bash
+
+# vim: ts=4 sw=4 sts=4 et tw=72 :
+
+rh_systems() {
+    # Handle the occurance where SELINUX is actually disabled
+    if [ `grep SELINUX=permissive /etc/selinux/config` ]; then
+        # make sure that the filesystem is properly labelled.
+        # it could be not fully labeled correctly if it was just switched
+        # from disabled, the autorelabel misses some things
+        # skip relabelling on /dev as it will generally throw errors
+        restorecon -R -e /dev /
+
+        # enable enforcing mode from the very start
+        setenforce enforcing
+
+        # configure system for enforcing mode on next boot
+        sed -i 's/SELINUX=permissive/SELINUX=enforcing/' /etc/selinux/config
+    else
+        sed -i 's/SELINUX=disabled/SELINUX=permissive/' /etc/selinux/config
+        touch /.autorelabel
+
+        echo "*******************************************"
+        echo "** SYSTEM REQUIRES A RESTART FOR SELINUX **"
+        echo "*******************************************"
+    fi
+
+    echo "---> Updating operating system"
+    yum clean all -q
+    yum update -y -q
+
+    # add in components we need or want on systems
+    echo "---> Installing base packages"
+    yum install -y -q @base unzip xz puppet git perl-XML-XPath
+
+    # All of our systems require Java (because of Jenkins)
+    # Install all versions of the OpenJDK devel but force 1.7.0 to be the
+    # default
+
+    echo "---> Configuring OpenJDK"
+    yum install -y -q 'java-*-openjdk-devel'
+    alternatives --set java /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
+    alternatives --set java_sdk_openjdk /usr/lib/jvm/java-1.7.0-openjdk.x86_64
+}
+
+ubuntu_systems() {
+    # Ignore SELinux since slamming that onto Ubuntu leads to
+    # frustration
+
+    echo "---> Updating operating system"
+    apt-get update -qq
+    apt-get upgrade -y --force-yes -qq
+
+    # add in stuff we know we need
+    echo "---> Installing base packages"
+    apt-get install -y --force-yes -qq unzip xz-utils puppet git libxml-xpath-perl
+
+    # install Java 7
+    echo "---> Configuring OpenJDK"
+    apt-get install -y --force-yes -qq openjdk-7-jdk
+    
+    # make jdk8 available
+    add-apt-repository -y ppa:openjdk-r/ppa
+    apt-get update -qq
+    # We need to force openjdk-8-jdk to install
+    apt-get install -y -qq openjdk-8-jdk
+
+    # make sure that we still default to openjdk 7
+    update-alternatives --set java /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
+    update-alternatives --set javac /usr/lib/jvm/java-7-openjdk-amd64/bin/javac
+}
+
+all_systems() {
+    # To handle the prompt style that is expected all over the environment
+    # with how use use robotframework we need to make sure that it is
+    # consistent for any of the users that are created during dynamic spin
+    # ups
+    echo 'PS1="[\u@\h \W]> "' >> /etc/skel/.bashrc
+
+    # Do any Distro specific installations here
+    echo "Checking distribution"
+    FACTER_OS=`/usr/bin/facter operatingsystem`
+    case "$FACTER_OS" in
+        RedHat|CentOS)
+            if [ `/usr/bin/facter operatingsystemrelease | /bin/cut -d '.' -f1` = "7" ]; then
+                echo
+                echo "---> CentOS 7"
+                echo "No extra steps currently for CentOS 7"
+                echo
+            else
+                echo "---> CentOS 6"
+                echo "Installing ODL YUM repo"
+                yum install -q -y https://nexus.opendaylight.org/content/repositories/opendaylight-yum-epel-6-x86_64/rpm/opendaylight-release/0.1.0-1.el6.noarch/opendaylight-release-0.1.0-1.el6.noarch.rpm
+            fi
+        ;;
+        *)
+            echo "---> $FACTER_OS found"
+            echo "No extra steps for $FACTER_OS"
+        ;;
+    esac
+}
+
+echo "---> Attempting to detect OS"
+# OS selector
+if [ -f /usr/bin/yum ]
+then
+    OS='RH'
+else
+    OS='UBUNTU'
+fi
+
+case "$OS" in
+    RH)
+        echo "---> RH type system detected"
+        rh_systems
+    ;;
+    UBUNTU)
+        echo "---> Ubuntu system detected"
+        ubuntu_systems
+    ;;
+    *)
+        echo "---> Unknown operating system"
+    ;;
+esac
+
+# execute steps for all systems
+all_systems
diff --git a/vagrant/rackspace-convert-base/bootstrap.sh b/vagrant/rackspace-convert-base/bootstrap.sh
deleted file mode 100644 (file)
index 15d47f6..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/bin/bash
-
-# vim: ts=4 sw=4 sts=4 et tw=72 :
-
-# Handle the occurance where SELINUX is actually disabled
-if [ `grep SELINUX=permissive /etc/selinux/config` ]; then
-    # make sure that the filesystem is properly labelled.
-    # it could be not fully labeled correctly if it was just switched
-    # from disabled, the autorelabel misses some things
-    # skip relabelling on /dev as it will generally throw errors
-    restorecon -R -e /dev /
-
-    # enable enforcing mode from the very start
-    setenforce enforcing
-
-    # configure system for enforcing mode on next boot
-    sed -i 's/SELINUX=permissive/SELINUX=enforcing/' /etc/selinux/config
-else
-    sed -i 's/SELINUX=disabled/SELINUX=permissive/' /etc/selinux/config
-    touch /.autorelabel
-
-    echo "*******************************************"
-    echo "** SYSTEM REQUIRES A RESTART FOR SELINUX **"
-    echo "*******************************************"
-fi
-
-yum clean all -q
-yum update -y -q
-
-# add in components we need or want on systems
-yum install -y -q @base unzip xz puppet git perl-XML-XPath
-
-# All of our systems require Java (because of Jenkins)
-# Install all versions of the OpenJDK devel but force 1.7.0 to be the
-# default
-
-yum install -y -q 'java-*-openjdk-devel'
-alternatives --set java /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
-alternatives --set java_sdk_openjdk /usr/lib/jvm/java-1.7.0-openjdk.x86_64
-
-# To handle the prompt style that is expected all over the environment
-# with how use use robotframework we need to make sure that it is
-# consistent for any of the users that are created during dynamic spin
-# ups
-echo 'PS1="[\u@\h \W]> "' >> /etc/skel/.bashrc
-
-# Do any Distro specific installations here
-echo "Checking distribution"
-if [ `/usr/bin/facter operatingsystem` = "Fedora" ]; then
-    echo "---> Fedora found"
-    echo "No extra steps for Fedora"
-else
-    if [ `/usr/bin/facter operatingsystemrelease | /bin/cut -d '.' -f1` = "7" ]; then
-        echo "---> CentOS 7"
-        echo "No extra steps currently for CentOS 7"
-    else
-        echo "---> CentOS 6"
-        echo "Installing ODL YUM repo"
-        yum install -q -y https://nexus.opendaylight.org/content/repositories/opendaylight-yum-epel-6-x86_64/rpm/opendaylight-release/0.1.0-1.el6.noarch/opendaylight-release-0.1.0-1.el6.noarch.rpm
-    fi
-fi