2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2025-05-30 01:26:38 +00:00
2018-08-31 05:50:51 -04:00

172 lines
4.3 KiB
Bash

#!/bin/bash
#USAGE:cfghamn -l shared_data_path -i VIP [-g git_repo_for_xcat_inventory_data] [-x s|d|a]
str_os_type=`uname -s`
if [ x"$str_os_type" = "xLinux" ];then
str_dir_name="${0%/*}"
. $str_dir_name/xcatlib.sh
else
log_error "Does NOT support non-Linux Operating System."
exit 1
fi
# get specific NIC for VIP
function get_nic(){
pysical_ip=$1
primary_nic=`ip route | grep $pysical_ip | awk -F '[ \t*]' '{print $3}'|head -1`
if [ -n $primary_nic ]; then
echo $primary_nic:0
fi
}
function get_mask(){
pysical_ip=$1
prefix=$(ip route |grep $pysical_ip|awk '{print $1}'|cut -f 2 -d'/')
netmask=$(v4prefix2mask $prefix)
if [ -n $netmask ]; then
echo $netmask
else
echo "255.255.255.0"
fi
}
pysical_hostname=$(hostname -s)
pysical_ip=$(hostname -i)
#create vip hostname
function get_vip_hostname(){
vip=$1
vip_hostname=$(getent hosts $vip | awk -F ' ' '{print $2}' | awk -F'.' '{print $1}'| uniq)
if [ -z $vip_hostname ]; then
vip_hostname=${pysical_hostname}-ha
fi
echo $vip_hostname
}
return_code=0
if [ $# -lt 4 ]; then
echo "USAGE:`basename $0` -l shared_data_path -i VIP"
exit 1
fi
while getopts "l:i:g:x:n:" opt; do
case $opt in
l)
SHARE_DATA=$OPTARG
echo "The shared data directory is $SHARE_DATA"
;;
i)
VIP=$OPTARG
echo "The VIP is $VIP"
;;
g)
URL=$OPTARG
echo "xcat-inventory git URL is $URL"
;;
x)
#options can be s|d|a
# s means setup, d means deactivate, a means activate
XCMD=$OPTARG
;;
n)
#VIP physical nic
PHYSICALNIC=$OPTARG
;;
\?)
echo "Invalid option: -$OPTARG"
return_code=1
;;
esac
done
if [ -z $PHYSICALNIC ]; then
VIP_NIC=$(get_nic $pysical_ip)
else
VIP_NIC=$PHYSICALNIC
fi
if [ -n $VIP_NIC ]; then
echo "VIP NIC is :" $VIP_NIC
else
echo "Error: cannot get VIP NIC"
return_code=1
fi
yum -y install yum-utils
cmdlable=""
if [ -n $XCMD ]; then
if [[ "${XCMD}" == "s" || "${XCMD}" == "a" || "${XCMD}" == "d" ]]; then
cmdlable=$XCMD
else
echo "Error: xcatha.py does not support $XCMD option"
return_code=1
fi
fi
NETMASK=$(get_mask $pysical_ip)
if [[ -n $NETMASK ]]; then
echo "NETMASK is :" $NETMASK
fi
VIP_hostname=$(get_vip_hostname $VIP)
if [ -n $VIP_hostname ]; then
echo "VIP hostname is :" $VIP_hostname
else
echo "Error: cannot define VIP hostname"
return_code=1
fi
SHARE_DATA_DES=/xcat/HA/$pysical_hostname
if [[ "$cmdlable" == "s" ]]; then
mkdir -p $SHARE_DATA_DES
mount|grep -w $SHARE_DATA_DES
if [ $? -ne 0 ]; then
mount $SHARE_DATA $SHARE_DATA_DES
if [ $? -ne 0 ]; then
echo "mount $SHARE_DATA $SHARE_DATA_DES [failed]"
return_code=1
fi
else
echo "$SHARE_DATA_DES is already mounted"
fi
fi
if [ -n "$URL" ]; then
rm -rf /root/xcat-mn-data
git clone $URL /root/xcat-mn-data
else
echo "There is no xcat-inventory data"
fi
if [ $return_code -eq 1 ]; then
echo "Process exit with above error"
exit $return_code
else
if [[ "$cmdlable" == "s" ]]; then
echo "Start to configure HA NODE $VIP_hostname"
msg="python /xcatpost/xcatha.py -s -p /$SHARE_DATA_DES -v $VIP -i $VIP_NIC -n $VIP_hostname -m $NETMASK"
echo $msg
python /xcatpost/xcatha.py -s -p /$SHARE_DATA_DES -v $VIP -i $VIP_NIC -n $VIP_hostname -m $NETMASK
if [ $? -ne 0 ]; then
return_code=1
fi
elif [[ "$cmdlable" == "a" ]]; then
echo "Start to activate $VIP_hostname"
python /xcatpost/xcatha.py -a -p /$SHARE_DATA_DES -v $VIP -i $VIP_NIC -n $VIP_hostname -m $NETMASK
if [ $? -eq 0 ]; then
if [ -d /root/xcat-mn-data ]; then
echo "use xcat-inventory to import Cluster data"
xcat-inventory import -f /root/xcat-mn-data/cluster.json
if [ $? -ne 0 ]; then
return_code=1
fi
fi
else
return_code=1
fi
elif [[ "$cmdlable" == "d" ]]; then
echo "Start to deactivate $VIP_hostname"
python /xcatpost/xcatha.py -d -v $VIP -i $VIP_NIC
if [ $? -ne 0 ]; then
return_code=1
fi
else
return_code=1
fi
fi
exit $return_code