BOA: Smart and easy upgrade (Robert)
authorBarracuda Team
Sun, 6 May 2012 01:42:25 +0000 (03:42 +0200)
committerBarracuda Team
Sun, 6 May 2012 01:42:25 +0000 (03:42 +0200)
BARRACUDA.sh.txt
aegir/tools/bin/barracuda [new file with mode: 0755]
aegir/tools/bin/octopus [new file with mode: 0755]
docs/UPGRADE.txt

index 8e3acf8..d4a7489 100755 (executable)
@@ -5244,6 +5244,13 @@ fi
 
 
 ###--------------------###
+mkdir -p /usr/local/bin
+cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/tools/bin/barracuda /usr/local/bin/ &> /dev/null
+cp -af /opt/tmp/$_BOA_REPO_NAME/aegir/tools/bin/octopus /usr/local/bin/ &> /dev/null
+chmod 700 /usr/local/bin/{barracuda,octopus} &> /dev/null
+
+
+###--------------------###
 if [ "$_FORCE_REDIS_RESTART" = "YES" ] ; then
   service redis-server stop &> /dev/null
   killall -9 redis-server &> /dev/null
diff --git a/aegir/tools/bin/barracuda b/aegir/tools/bin/barracuda
new file mode 100755 (executable)
index 0000000..e4d689a
--- /dev/null
@@ -0,0 +1,83 @@
+#!/bin/bash
+
+PATH=/usr/local/sbin:/usr/local/bin:/opt/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+SHELL=/bin/bash
+
+_TODAY=`date +%y%m%d`
+_NOW=`date +%y%m%d-%H%M`
+_CHECK_HOST=`uname -n`
+
+up_action ()
+{
+if [ -e "/var/backups/BARRACUDA.sh.txt" ] ; then
+  sed -i "s/_AUTOPILOT=NO/_AUTOPILOT=YES/g"              /var/backups/BARRACUDA.sh.txt
+  sed -i "s/_DNS_SETUP_TEST=YES/_DNS_SETUP_TEST=NO/g"    /var/backups/BARRACUDA.sh.txt
+  sed -i "s/_SMTP_RELAY_TEST=YES/_SMTP_RELAY_TEST=NO/g"  /var/backups/BARRACUDA.sh.txt
+  sed -i "s/_GIT_MIRROR=\"\"/_GIT_MIRROR=github/g"       /var/backups/BARRACUDA.sh.txt
+  if [ -e "/root/.host8.cnf" ] || [[ "$_CHECK_HOST" =~ ".host8." ]] ; then
+    sed -i "s/_AUTOPILOT=NO/_AUTOPILOT=YES/g"            /root/.barracuda.cnf &> /dev/null
+    sed -i "s/_GIT_MIRROR=\"\"/_GIT_MIRROR=github/g"     /root/.barracuda.cnf &> /dev/null
+    sed -i "s/_DNS_SETUP_TEST=YES/_DNS_SETUP_TEST=NO/g"  /root/.barracuda.cnf &> /dev/null
+  fi
+  if [ -e "/var/backups/BARRACUDA.sh.txt" ] ; then
+    if [ -e "/root/.host8.cnf" ] || [[ "$_CHECK_HOST" =~ ".host8." ]] ; then
+      bash /var/backups/BARRACUDA.sh.txt >/var/backups/barracuda-upgrade-log-$_NOW.log 2>&1
+    else
+      bash /var/backups/BARRACUDA.sh.txt
+    fi
+  fi
+else
+  echo BARRACUDA.sh.txt download issue
+  exit 1
+fi
+}
+
+up_start ()
+{
+if test -f /var/run/boa_run.pid ; then
+  echo Another BOA installer is running probably - /var/run/boa_run.pid exists
+  exit 1
+elif test -f /var/run/boa_wait.pid ; then
+  echo Some important system task is running probably - /var/run/boa_wait.pid exists
+  exit 1
+else
+  touch /var/run/boa_run.pid
+  touch /var/run/boa_wait.pid
+  cd /var/backups
+  rm -f /var/backups/BARRACUDA.sh.txt
+fi
+}
+
+up_finish ()
+{
+  rm -f /var/run/boa_run.pid
+  rm -f /var/run/boa_wait.pid
+  echo
+  echo BARRACUDA upgrade completed
+  echo Bye
+  exit 0
+}
+
+up_head ()
+{
+  up_start
+  wget -q -U iCab http://code.aegir.cc/aegir/barracuda-octopus/blobs/raw/master/BARRACUDA.sh.txt
+  up_action
+  up_finish
+}
+
+up_stable ()
+{
+  up_start
+  wget -q -U iCab http://files.aegir.cc/versions/BARRACUDA.sh.txt
+  up_action
+  up_finish
+}
+
+case "$1" in
+  up-stable) up_stable ;;
+  up-head)   up_head ;;
+  *)         echo "Usage: barracuda {up-stable|up-head}"
+                exit 1
+  ;;
+esac
diff --git a/aegir/tools/bin/octopus b/aegir/tools/bin/octopus
new file mode 100755 (executable)
index 0000000..6749a77
--- /dev/null
@@ -0,0 +1,166 @@
+#!/bin/bash
+
+PATH=/usr/local/sbin:/usr/local/bin:/opt/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+SHELL=/bin/bash
+
+_TODAY=`date +%y%m%d`
+_NOW=`date +%y%m%d-%H%M`
+_CHECK_HOST=`uname -n`
+
+up_one ()
+{
+  if [ -e "/var/backups/OCTOPUS.sh.txt" ] ; then
+    cp -af /var/backups/OCTOPUS.sh.txt                     /var/backups/OCTOPUS.sh.$_THIS_HM_USER
+    sed -i "s/_AUTOPILOT=NO/_AUTOPILOT=YES/g"              /var/backups/OCTOPUS.sh.$_THIS_HM_USER
+    sed -i "s/_DNS_SETUP_TEST=YES/_DNS_SETUP_TEST=NO/g"    /var/backups/OCTOPUS.sh.$_THIS_HM_USER
+    sed -i "s/_GIT_MIRROR=\"\"/_GIT_MIRROR=github/g"       /var/backups/OCTOPUS.sh.$_THIS_HM_USER
+    sed -i "s/_USER=o1/_USER=$_THIS_HM_USER/g"             /var/backups/OCTOPUS.sh.$_THIS_HM_USER
+    if [ -e "/root/.host8.cnf" ] || [[ "$_CHECK_HOST" =~ ".host8." ]] ; then
+      sed -i "s/D7P D7S D7D D6P D6S D6D OAM/ALL/g"         /var/backups/OCTOPUS.sh.$_THIS_HM_USER
+      sed -i "s/D7P D7S D7D D6P D6S D6D OAM/ALL/g"         /root/.$_THIS_HM_USER.octopus.cnf &> /dev/null
+      sed -i "s/_AUTOPILOT=NO/_AUTOPILOT=YES/g"            /root/.$_THIS_HM_USER.octopus.cnf &> /dev/null
+      sed -i "s/_GIT_MIRROR=\"\"/_GIT_MIRROR=github/g"     /root/.$_THIS_HM_USER.octopus.cnf &> /dev/null
+      sed -i "s/_DNS_SETUP_TEST=YES/_DNS_SETUP_TEST=NO/g"  /root/.$_THIS_HM_USER.octopus.cnf &> /dev/null
+    fi
+    if [ ! -e "/var/backups/octopus-contrib-upgrade-$_NOW.log" ] ; then
+      sed -i "s/_O_CONTRIB_UP=NO/_O_CONTRIB_UP=YES/g"      /var/backups/OCTOPUS.sh.$_THIS_HM_USER
+    fi
+    if [ -e "/data/disk/$_THIS_HM_USER/log/option.txt" ] ; then
+      _CLIENT_OPTION=`cat /data/disk/$_THIS_HM_USER/log/option.txt`
+      _CLIENT_OPTION=`echo -n $_CLIENT_OPTION | tr -d "\n"`
+    fi
+    if [ -e "/var/backups/OCTOPUS.sh.$_THIS_HM_USER" ] && [ ! -e "$User/log/up-$_TODAY" ] ; then
+      bash /var/backups/OCTOPUS.sh.$_THIS_HM_USER
+      touch $User/log/up-$_TODAY
+    fi
+  else
+    echo OCTOPUS.sh.txt download issue
+    exit 1
+  fi
+}
+
+up_action_all ()
+{
+  for User in `find /data/disk/ -maxdepth 1 | sort`
+  do
+    NOW_LOAD=`awk '{print $1*100}' /proc/loadavg`
+    CTL_LOAD=1888
+    if [ -d "$User/config/server_master/nginx/vhost.d" ] && [ -e "$User/log/cores.txt" ] && [ ! -e "$User/log/CANCELLED" ] ; then
+      if [ $NOW_LOAD -lt $CTL_LOAD ]; then
+        _THIS_HM_USER=`echo $User | cut -d'/' -f4 | awk '{ print $1}'`
+        echo load is $NOW_LOAD while maxload is $CTL_LOAD
+        echo Octopus upgrade for User $User
+        sleep 3
+        if [ -e "/root/.host8.cnf" ] || [[ "$_CHECK_HOST" =~ ".host8." ]] ; then
+          up_one >>/var/backups/octopus-upgrade-log-$_NOW.log 2>&1
+        else
+          up_one
+        fi
+        sleep 3
+        rm -f /var/backups/OCTOPUS.sh.$_THIS_HM_USER
+        echo Done for $User
+        if [ ! -e "/var/backups/octopus-contrib-upgrade-$_NOW.log" ] ; then
+          touch /var/backups/octopus-contrib-upgrade-$_NOW.log
+        fi
+      else
+        echo load is $NOW_LOAD while maxload is $CTL_LOAD
+        echo ...we have to wait...
+      fi
+      echo
+      echo
+    fi
+  done
+}
+
+up_action_one ()
+{
+  User="/data/disk/$second"
+  NOW_LOAD=`awk '{print $1*100}' /proc/loadavg`
+  CTL_LOAD=1888
+  if [ -d "$User/config/server_master/nginx/vhost.d" ] && [ -e "$User/log/cores.txt" ] && [ ! -e "$User/log/CANCELLED" ] ; then
+    if [ $NOW_LOAD -lt $CTL_LOAD ]; then
+      _THIS_HM_USER=`echo $User | cut -d'/' -f4 | awk '{ print $1}'`
+      echo load is $NOW_LOAD while maxload is $CTL_LOAD
+      echo Octopus upgrade for User $User
+      sleep 3
+      if [ -e "/root/.host8.cnf" ] || [[ "$_CHECK_HOST" =~ ".host8." ]] ; then
+        up_one >>/var/backups/octopus-upgrade-log-$_NOW.log 2>&1
+      else
+        up_one
+      fi
+      sleep 3
+      rm -f /var/backups/OCTOPUS.sh.$_THIS_HM_USER
+      echo Done for $User
+      if [ ! -e "/var/backups/octopus-contrib-upgrade-$_NOW.log" ] ; then
+        touch /var/backups/octopus-contrib-upgrade-$_NOW.log
+      fi
+    else
+      echo load is $NOW_LOAD while maxload is $CTL_LOAD
+      echo try again later
+    fi
+    echo
+    echo
+  fi
+}
+
+up_start ()
+{
+  if test -f /var/run/boa_run.pid ; then
+    echo Another BOA installer is running probably - /var/run/boa_run.pid exists
+    exit 1
+  elif test -f /var/run/boa_wait.pid ; then
+    echo Some important system task is running probably - /var/run/boa_wait.pid exists
+    exit 1
+  else
+    touch /var/run/boa_run.pid
+    touch /var/run/boa_wait.pid
+    cd /var/backups
+    rm -f /var/backups/OCTOPUS.sh.txt
+  fi
+}
+
+up_finish ()
+{
+  rm -f /var/run/boa_run.pid
+  rm -f /var/run/boa_wait.pid
+  echo
+  echo OCTOPUS upgrade completed
+  echo Bye
+  exit 0
+}
+
+up_head ()
+{
+  up_start
+  wget -q -U iCab http://code.aegir.cc/aegir/barracuda-octopus/blobs/raw/master/OCTOPUS.sh.txt
+  if [ "$second" = "all" ] ; then
+    up_action_all
+  else
+    up_action_one
+  fi
+  up_finish
+}
+
+up_stable ()
+{
+  up_start
+  wget -q -U iCab http://files.aegir.cc/versions/OCTOPUS.sh.txt
+  if [ "$second" = "all" ] ; then
+    up_action_all
+  else
+    up_action_one
+  fi
+  up_finish
+}
+
+case "$1" in
+  up-stable) second="$2"
+             up_stable
+  ;;
+  up-head)   second="$2"
+             up_head
+  ;;
+  *)         echo "Usage: octopus {up-stable|up-head} {all|o1}"
+                exit 1
+  ;;
+esac
index b71b6e2..08ebdc3 100644 (file)
@@ -7,29 +7,31 @@
   The HEAD can be occasionally broken and should be used **only** for testing!
 
 
-### To upgrade OS/libraries/services and/or optionally Aegir Master Instance to Stable:
+### To upgrade system and Aegir Master Instance to Stable:
 #
-$ wget -q -U iCab http://files.aegir.cc/versions/BARRACUDA.sh.txt
-$ nano BARRACUDA.sh.txt (edit your e-mail address)
-$ bash BARRACUDA.sh.txt (say Y/n on prompt for upgrade of hostmaster)
+$ barracuda up-stable
 
 
-### To upgrade OS/libraries/services and/or optionally Aegir Master Instance to HEAD:
+### To upgrade system and Aegir Master Instance to HEAD:
 #
-$ wget -q -U iCab http://code.aegir.cc/aegir/barracuda-octopus/blobs/raw/master/BARRACUDA.sh.txt
-$ nano BARRACUDA.sh.txt (set _AEGIR_VERSION=HEAD, edit your e-mail address)
-$ bash BARRACUDA.sh.txt
+$ barracuda up-head
 
 
-### To upgrade any Aegir Satellite Instance to Stable and/or platforms selectively:
+### To upgrade selected Aegir Satellite Instance to Stable:
 #
-$ wget -q -U iCab http://files.aegir.cc/versions/OCTOPUS.sh.txt
-$ nano OCTOPUS.sh.txt (edit only your e-mail address and username of upgraded instance)
-$ bash OCTOPUS.sh.txt (say Y/n on prompts for upgrade of hostmaster and/or platforms)
+$ octopus up-stable o1
 
 
-### To upgrade any Aegir Satellite Instance to HEAD and/or platforms selectively:
+### To upgrade *all* Aegir Satellite Instances to Stable:
 #
-$ wget -q -U iCab http://code.aegir.cc/aegir/barracuda-octopus/blobs/raw/master/OCTOPUS.sh.txt
-$ nano OCTOPUS.sh.txt (set _AEGIR_VERSION=HEAD, edit only your e-mail address and username)
-$ bash OCTOPUS.sh.txt (say Y/n on prompts for upgrade of hostmaster and/or platforms)
+$ octopus up-stable all
+
+
+### To upgrade selected Aegir Satellite Instance to HEAD:
+#
+$ octopus up-head o1
+
+
+### To upgrade *all* Aegir Satellite Instances to HEAD:
+#
+$ octopus up-head all