From 2bf833976e5bae0b4afbef20b31e44ed72dbf0ac Mon Sep 17 00:00:00 2001 From: David Shrewsbury Date: Fri, 21 Jun 2013 14:26:19 -0400 Subject: [PATCH] Add script to upgrade worker from 2.0 to 3.0. Change-Id: I3156d7e2ee13505baa4ca40b5403a9d59cfc6cda --- bin/upgrade_worker_V2toV3.sh | 114 +++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100755 bin/upgrade_worker_V2toV3.sh diff --git a/bin/upgrade_worker_V2toV3.sh b/bin/upgrade_worker_V2toV3.sh new file mode 100755 index 00000000..9eddb178 --- /dev/null +++ b/bin/upgrade_worker_V2toV3.sh @@ -0,0 +1,114 @@ +#!/bin/bash +############################################################################## +# Copyright (c) 2013 Hewlett-Packard Development Company, L.P. +# +# 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. +############################################################################## + + +############################################################################## +# DESCRIPTION +# This script is used to manually upgrade a worker node running a 2.0 +# version of Libra to the 3.0 version. This is specifically targeted to +# Ubuntu nodes, but may work on other distributions, though that is +# untested. It makes some assumptions about the current setup. +# +# This script is designed to be safe to run multiple times, in case an +# error is encountered and it must be run again. +# +# EXIT VALUES +# 0 on success, 1 on error +############################################################################## + +if [ $USER != "root" ] +then + echo "Must be run as root user." + exit 1 +fi + +LOG="/tmp/update_node.log" + +if [ -e ${LOG} ] +then + rm -f ${LOG} +fi + +################################################# +# Update sudo privs by inserting '/usr/bin/chown' +################################################# +file="/etc/sudoers" +echo "Updating SUDO file $file" | tee -a ${LOG} + +sed -i.bak -e '/^%haproxy/ c\ +%haproxy ALL = NOPASSWD: /usr/sbin/service, /bin/cp, /bin/mv, /bin/rm, /bin/chown' ${file} +if [ $? -ne 0 ] +then + echo "Edit of ${file} failed." | tee -a ${LOG} + exit 1 +fi + +if [ -e ${file}.bak ] +then + rm ${file}.bak +fi + +######################### +# Chown on haproxy socket +######################### +haproxysock="/var/run/haproxy-stats.socket" +echo "Doing chown of haproxy socket ${haproxysock}" | tee -a ${LOG} + +if [ -e ${haproxysock} ] +then + chown haproxy:haproxy ${haproxysock} + if [ $? -ne 0 ] + then + echo "chown on ${haproxysock} failed." | tee -a ${LOG} + exit 1 + fi +fi + + +########################## +# Edit current haproxy.cfg +########################## +haproxycfg="/etc/haproxy/haproxy.cfg" +echo "Updating HAProxy config file ${haproxycfg}" | tee -a ${LOG} + +if [ -e ${haproxycfg} ] +then + sed -i.bak -e '/stats socket/ c\ + stats socket /var/run/haproxy-stats.socket user haproxy group haproxy mode operator' ${haproxycfg} + if [ $? -ne 0 ] + then + echo "Editing ${haproxycfg} failed." | tee -a ${LOG} + exit 1 + fi +fi + +if [ -e ${haproxycfg}.bak ] +then + rm -f ${haproxycfg}.bak +fi + + +################# +# Restart haproxy +################# +echo "Restarting haproxy" | tee -a ${LOG} +service haproxy restart 2>&1 >> ${LOG} +if [ $? -ne 0 ]; then echo "haproxy restart failed" | tee -a ${LOG}; exit 1; fi + + +exit 0