Merge "Update Ubuntu 1404 with 1604 mininet-ovs-25 images"
[releng/builder.git] / packer / provision / baseline.sh
index 4d690d977b4cb7f566a73f9b2c8460fb87fbf4e5..e5f727f5a4e57eb6c08a0aadae892e42edb972a6 100644 (file)
@@ -5,6 +5,41 @@
 # force any errors to cause the script and job to end in failure
 set -xeu -o pipefail
 
+enable_service() {
+    # Enable services for Ubuntu instances
+    services=($@)
+
+    for service in "${services[@]}"; do
+        echo "---> Enable service: $service"
+        FACTER_OS=$(/usr/bin/facter operatingsystem)
+        FACTER_OSVER=$(/usr/bin/facter operatingsystemrelease)
+        if [ "$FACTER_OS" == "CentOS" ]; then
+            systemctl enable "$service"
+            systemctl start "$service"
+            systemctl status "$service"
+        elif [ "$FACTER_OS" == "Ubuntu" ]; then
+            case "$FACTER_OSVER" in
+                14.04)
+                    service "$service" start
+                    service "$service" status
+                ;;
+                16.04)
+                    systemctl enable "$service"
+                    systemctl start "$service"
+                    systemctl status "$service"
+                ;;
+                *)
+                    echo "---> Unknown Ubuntu version $FACTER_OSVER"
+                    exit 1
+                ;;
+            esac
+        else
+            echo "---> Unknown OS $FACTER_OS"
+            exit 1
+        fi
+    done
+}
+
 ensure_kernel_install() {
     # Workaround for mkinitrd failing on occassion.
     # On CentOS 7 it seems like the kernel install can fail it's mkinitrd
@@ -177,6 +212,17 @@ EOF
     # install haveged to avoid low entropy rejecting ssh connections
     yum install -y haveged
     systemctl enable haveged.service
+
+    # Install sysstat
+    yum install -y sysstat
+    enable_service sysstat
+
+    # Install python3 and dependencies, needed for Coala linting at least
+    yum install -y python34
+    yum install -y python34-{devel,virtualenv,setuptools,pip}
+
+    # Install python dependencies, useful generally
+    yum install -y python-{devel,virtualenv,setuptools,pip}
 }
 
 ubuntu_systems() {
@@ -223,23 +269,35 @@ EOF
 
     ensure_ubuntu_install unzip xz-utils puppet git libxml-xpath-perl
 
-    # install Java 7
-    echo "---> Configuring OpenJDK"
+    # Install python3 and dependencies, needed for Coala linting
+    ensure_ubuntu_install python3
+    ensure_ubuntu_install python3-{dev,setuptools,pip}
+
+    # Install python and dependencies
+    ensure_ubuntu_install python-{dev,virtualenv,setuptools,pip}
+
     FACTER_OSVER=$(/usr/bin/facter operatingsystemrelease)
     case "$FACTER_OSVER" in
         14.04)
+            echo "---> Installing OpenJDK"
             apt-get install openjdk-7-jdk
             # make jdk8 available
             add-apt-repository -y ppa:openjdk-r/ppa
             apt-get update
             # We need to force openjdk-8-jdk to install
             apt-get install openjdk-8-jdk
+            echo "---> Configuring OpenJDK"
             # 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
         ;;
         16.04)
+            echo "---> Installing OpenJDK"
             apt-get install openjdk-8-jdk
+
+            echo "---> Installing python3 virtualenv"
+            # python3-virtualenv is available starting with 16.04.
+            ensure_ubuntu_install python3-virtualenv
         ;;
         *)
             echo "---> Unknown Ubuntu version $FACTER_OSVER"
@@ -268,12 +326,16 @@ EOF
 
     ensure_ubuntu_install cabal-install
     cabal update
-    cabal install "Cabal<1.18"  # Pull Cabal version that is capable of building shellcheck
     cabal install --bindir=/usr/local/bin "shellcheck-0.4.6"  # Pin shellcheck version
 
     # --- END LFTOOLS DEPS
     ######################
 
+    # Install sysstat
+    ensure_ubuntu_install sysstat
+    sed -i 's/ENABLED="false"/ENABLED="true"/' /etc/default/sysstat
+    enable_service sysstat
+
     # install haveged to avoid low entropy rejecting ssh connections
     apt-get install haveged
     update-rc.d haveged defaults