Skip to content

Instantly share code, notes, and snippets.

@shaon
Last active December 17, 2015 03:39
Show Gist options
  • Save shaon/b53451a964ae7f553829 to your computer and use it in GitHub Desktop.
Save shaon/b53451a964ae7f553829 to your computer and use it in GitHub Desktop.
re-install eucalyptus on QA system, mainly used on CLC
#!/bin/bash
## CONFIG START ##
EUCACOMMIT="<eucalyptus commit-yyyy-mm-dd-nn>"
ENTRCOMMIT="<enterprise commit-yyyy-mm-dd-nn>"
CLCW00="<primary clc walrus ip>"
CCSC00="<primary cc sc ip>"
NC00="<node controller ip> <node controller ip>"
STORAGEBACKEND="das"
DASDEVICE="/dev/vg01" # for das backend only
# FIXME
LBIMGPATH="<load balancer image path>" # if it's downloaded on CLC
LBIMGURL="<load balancer image url>" # or download location
## CONFIG END ##
echo -e "Review configuration\n"
echo -e "============================\n"
echo -e "Eucalyptus Commit: "$EUCACOMMIT
echo -e "Enterprise Commit: "$ENTRCOMMIT
echo -e "CLC/Walrus IP: "$CLCW00
echo -e "CC/SC IP: "$CCSC00
echo -e "Node Controlers: "$NC00
echo -e "Storage Backend: "$STORAGEBACKEND
echo -e "Das Device (for das backend only)" :$DASDEVICE
echo -e "LB Image Path: "$LBIMGPATH
echo -e "LB Image URL: "$LBIMGURL
echo -e "============================\n"
OK="n"
read -p "Is this configuration OK? [n/y]: " OK
if [ $OK == "n" ];
then
exit 1
fi
PRIMARYCLC="n"
read -p "Is this PRIMARY CLOUD CONTROLLER? [n/y]: " PRIMARYCLC
sleep 4
echo -e "Setting up new repositories...\n"
sleep 1
cat > /etc/yum.repos.d/eucalyptus.repo <<EOF
[eucalyptus]
name=eucalyptus
baseurl=http://packages.release.eucalyptus-systems.com/yum/builds/eucalyptus/commit/$EUCACOMMIT/centos/6/x86_64
enabled=1
gpgcheck=0
EOF
cat > /etc/yum.repos.d/eucalyptus-enterprise.repo <<EOF
[eucalyptus-enterprise]
name=eucalyptus-enterprise
baseurl=http://packages.release.eucalyptus-systems.com/yum/builds/enterprise/commit/$ENTRCOMMIT/centos/6/x86_64
enabled=1
gpgcheck=0
EOF
cat > /etc/yum.repos.d/pgrpms.repo <<EOF
[pgrpms]
name=Extra Repo - pgrpms
baseurl=http://packages.release.eucalyptus-systems.com/yum/tags/euca-master-bootstrap/rhel/6/x86_64/
enabled=1
gpgcheck=0
EOF
MACHINES=( $CLCW00 $CCSC00 $NC00 )
for i in "${MACHINES[@]}"
do
echo -e "Copying repositories to $i"
scp /etc/yum.repos.d/eucalyptus* root@$i:/etc/yum.repos.d/
scp /etc/yum.repos.d/pgrpms.repo root@$i:/etc/yum.repos.d/
done
# delete all volumes
#for x in `euca-describe-volumes verbose | cut -f 2`; do euca-delete-volume $x; done
# deregister/delete all images
echo -e "Deregistering EMIs... \n"
for x in `euca-describe-images | cut -f 2 | grep ^e`; do euca-deregister $x; done
for x in `euca-describe-images | cut -f 2 | grep ^e`; do euca-deregister $x; done
# delete all snapshots
for x in `euca-describe-snapshots verbose | cut -f 2`; do euca-delete-snapshot $x; done
echo -e "Stopping Components... \n"
echo -e "Stopping CLC/Walrus... \n"
service eucalyptus-cloud stop
sleep 3
echo -e "Stopping SC... \n"
ssh root@$CCSC00 service eucalyptus-cloud stop
sleep 2
echo -e "Stopping CC... \n"
ssh root@$CCSC00 service eucalyptus-cc stop
sleep 2
NODECONTROLLERS=( $NC00 )
for n in "${NODECONTROLLERS[@]}"
do
echo -e "Stopping NC $n... \n"
ssh root@$n service eucalyptus-nc stop
sleep 2
done
echo -e "Removing DB and Keys from $CLCW00 ... \n"
rm -rf /var/lib/eucalyptus/db/*
for i in "${MACHINES[@]}"
do
echo -e "Removing DB and Keys from $i ... \n"
ssh root@$i rm -rf /var/lib/eucalyptus/keys/*
ssh root@$i yum clean expire-cache
ssh root@$i yum clean all
done
yum update "eucalyptus*" -y
echo -e "Unsetting environment variables...\n"
unset EC2_URL
unset S3_URL
unset EUARE_URL
unset TOKEN_URL
unset AWS_AUTO_SCALING_URL
unset AWS_CLOUDWATCH_URL
unset EUSTORE_URL
unset EC2_PRIVATE_KEY
unset EC2_CERT
unset EC2_JVM_ARGS
unset EUCALYPTUS_CERT
unset EC2_ACCOUNT_NUMBER
unset EC2_ACCESS_KEY
unset EC2_SECRET_KEY
unset AWS_ACCESS_KEY
unset AWS_SECRET_KEY
unset AWS_CREDENTIAL_FILE
unset EC2_USER_ID
sleep 2
for e in "${MACHINES[@]}"
do
echo -e "Updating Eucalyptus at $e\n"
sleep 1
ssh root@$e yum clean expire-cache
ssh root@$e yum clean all
ssh root@$e yum update "eucalyptus*" -y
sleep 1
echo -e "\nEucalyptus UPDATED on $e\n"
done
sleep 3
if [ $PRIMARYCLC == "y" ];
then
euca_conf --initialize
fi
echo -e "Starting EUCALYPTUS CLOUD CONTROLLER/WALRUS... \n"
service eucalyptus-cloud start
sleep 240
echo -e "Starting Cluster Controller...\n"
ssh root@$CCSC00 service eucalyptus-cc start
sleep 3
echo -e "Starting Storage Controller...\n"
ssh root@$CCSC00 service eucalyptus-cloud start
sleep 15
NODECONTROLLERS=( $NC00 )
for n in "${NODECONTROLLERS[@]}"
do
echo -e "Starting Node Controller $n"
ssh root@$n service eucalyptus-nc start
sleep 3
done
euca_conf --register-walrus --partition walrus --host $CLCW00 --component w00
sleep 5
echo "Waiting for systems to become ready"
sleep 5
euca_conf --register-cluster --partition PARTI00 --host $CCSC00 --component cc00
sleep 5
echo "Waiting for systems to become ready"
sleep 20
euca_conf --register-sc --partition PARTI00 --host $CCSC00 --component sc00
sleep 5
echo -e "Waiting for systems to become ready\n"
sleep 60
for n in "${NODECONTROLLERS[@]}"
do
echo -e "Registering Node Controller $n \n"
ssh root@$CCSC00 euca_conf --register-nodes $n
done
sleep 5
echo -e "Downloading new credentials...\n"
sleep 1
rm -rf .euca; mkdir .euca; cd .euca; euca_conf --get-credentials admin.zip; unzip admin.zip; source eucarc; cd
sleep 1
LOADBALANCEREMI=`eustore-install-image -b loadbalancer -a x86_64 -s loadbalancer -t eucalyptus-load-balancer-image.tgz --hypervisor universal | grep "emi-" | awk '{print $4}'`
sleep 2
echo -e $LOADBALANCEREMI'\n'
echo -e "Registering loadbalancer EMI\n"
euca-modify-property -p loadbalancing.loadbalancer_emi=$LOADBALANCEREMI
echo -e "Downloading new credentials...\n"
sleep 1
rm -rf .euca; mkdir .euca; cd .euca; euca_conf --get-credentials admin.zip; unzip admin.zip; source eucarc; cd
sleep 1
echo -e "Installing CentOS 6.3 EMI from Eustore...\n"
eustore-install-image --hypervisor kvm -b centos63 -i 3868652036
echo -e "Set Network Tag property for QA System... \n"
euca-modify-property -p cloud.network.global_max_network_tag=639
sleep 2
euca-modify-property -p cloud.network.global_min_network_tag=512
sleep 3
echo -e "Selecting DAS as storage backend... \n"
sleep 2
euca-modify-property -p PARTI00.storage.blockstoragemanager=$STORAGEBACKEND
sleep 60
if [ $STORAGEBACKEND == "das" ]; then
echo -e "Selecting /dev/vg01 as DAS Device... \n"
sleep 5
euca-modify-property -p PARTI00.storage.dasdevice=$DASDEVICE
sleep 2
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment