diff --git a/defaults.inc b/defaults.inc index 1b95bd82..a9a91b75 100755 --- a/defaults.inc +++ b/defaults.inc @@ -142,9 +142,9 @@ PW_iDRACHOST_SHORTNAMES['10.10.2.27']='iDS-vMS-Host7' PW_iDRACHOST_SHORTNAMES['10.2.1.21']='OFF-vMS-Host1' PW_VCENTERHOST=10.10.1.30 -PW_MAINHOSTS=10.10.2.10,10.10.2.11 -PW_SYSHOSTS=10.10.2.16,10.10.2.17 -PW_OFFSITEHOSTS=10.2.1.11 +PW_MAIN_HOSTS=10.10.2.10,10.10.2.11 +PW_SYS_HOSTS=10.10.2.16,10.10.2.17 +PW_OFFSITE_HOSTS=10.2.1.11 PW_MAINSITE_HOSTS="${PW_MAINHOSTS},${PW_SYSHOSTS}" PW_ALL_HOSTS="${PW_MAINHOSTS},${PW_SYSHOSTS},${PW_OFFSITEHOSTS}" @@ -154,10 +154,10 @@ PW_UPS_IP=10.10.1.205 PW_APCPDU_IP=10.10.1.210 IFS=, -PW_MAINSITE_HOSTS=(${PW_MAINSITE_HOSTS}) -PW_MAINHOSTS=(${PW_MAINHOSTS}) -PW_SYSHOSTS=(${PW_SYSHOSTS}) -PW_OFFSITEHOSTS=(${PW_OFFSITEHOSTS}) +PW_MAINSITEHOSTS=(${PW_MAINSITE_HOSTS}) +PW_MAINHOSTS=(${PW_MAIN_HOSTS}) +PW_SYSHOSTS=(${PW_SYS_HOSTS}) +PW_OFFSITEHOSTS=(${PW_OFFSITE_HOSTS}) PW_ALLHOSTS=(${PW_ALL_HOSTS}) unset IFS diff --git a/powerwall.sh b/powerwall.sh index 16fb6791..4ac59fb3 100755 --- a/powerwall.sh +++ b/powerwall.sh @@ -8,7 +8,7 @@ source /opt/idssys/defaults/default.inc source /opt/idssys/powerwall/defaults.inc source ${PW_FOLDER}/settings.conf -# TEST=true +TEST=true shopt -s lastpipe @@ -1263,41 +1263,53 @@ SHUTDOWN_SERVERS(){ if [ ! -f ${PW_FOLDER}/shutdown.main ]; then touch ${PW_FOLDER}/shutdown.main - echo -en "Disabling CLS in vCenter ... " + MSG="Disabling CLS in vCenter" + c=0; MSG_SPC=''; spc1=`expr ${hc_cw} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done + echo -en "${idsCL[LightCyan]}${MSG}${MSG_SPC}: " if [ "${TEST}" != "true" ]; then run=$(ssh root@${PW_VCENTERHOST} "sed -i '//{n;s/.*<\/enabled>/False<\/enabled>/}' /etc/vmware-vpx/vpxd.cfg >/dev/null 2>&1" >/dev/null 2>&1) run=$(ssh root@${PW_VCENTERHOST} "service-control --stop vmware-vpxd >/dev/null 2>&1" >/dev/null 2>&1) run=$(ssh root@${PW_VCENTERHOST} "service-control --start vmware-vpxd >/dev/null & 2>&1" >/dev/null 2>&1) fi - echo "Done" + echo -e "${idsCL[Green]}Done${idsCL[Default]}" for ESXIHOST in "${PW_MAINHOSTS[@]}"; do - echo -en "Stopping iSCSI-PRI VM's on: ${PW_ESXI_HOST_NAMES[${ESXIHOST}]} ... " + MSG="Stopping iSCSI-PRI VM's on: ${PW_ESXI_HOST_NAMES[${ESXIHOST}]}" + c=0; MSG_SPC=''; spc1=`expr ${hc_cw} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done + echo -en "${idsCL[LightCyan]}${MSG}${MSG_SPC}: " [ "${TEST}" != "true" ] && run=$(${PW_FOLDER}/esxi-scripts/iscsi-vm-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1) - echo "Done" + echo -e "${idsCL[Green]}Done${idsCL[Default]}" done for ESXIHOST in "${PW_MAINHOSTS[@]}"; do - echo -en "Enabling Maintenance Mode on: ${PW_ESXI_HOST_NAMES[${ESXIHOST}]} ... " + MSG="Enabling Maintenance Mode on: ${PW_ESXI_HOST_NAMES[${ESXIHOST}]}" + c=0; MSG_SPC=''; spc1=`expr ${hc_cw} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done + echo -en "${idsCL[LightCyan]}${MSG}${MSG_SPC}: " [ "${TEST}" != "true" ] && run=$(${PW_FOLDER}/esxi-scripts/host-maintenance_mode.ps1 ${ESXIHOST} & >/dev/null 2>&1) - echo "Done" + echo -e "${idsCL[Green]}Done${idsCL[Default]}" done # sleep 1m for ESXIHOST in "${PW_MAINHOSTS[@]}"; do - echo -en "Verifying iSCSI-PRI VM's stopped on: ${PW_ESXI_HOST_NAMES[${ESXIHOST}]} ... " + MSG="Verifying iSCSI-PRI VM's stopped on: ${PW_ESXI_HOST_NAMES[${ESXIHOST}]}" + c=0; MSG_SPC=''; spc1=`expr ${hc_cw} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done + echo -en "${idsCL[LightCyan]}${MSG}${MSG_SPC}: " [ "${TEST}" != "true" ] && run=$(${PW_FOLDER}/esxi-scripts/iscsi-vm-shutdown-verify.ps1 ${ESXIHOST} >/dev/null 2>&1) - echo "Done" + echo -e "${idsCL[Green]}Done${idsCL[Default]}" done for ESXIHOST in "${PW_MAINHOSTS[@]}"; do - echo -en "Stopping Remaining VM's on: ${PW_ESXI_HOST_NAMES[${ESXIHOST}]} ... " + MSG="Stopping Remaining VM's on: ${PW_ESXI_HOST_NAMES[${ESXIHOST}]}" + c=0; MSG_SPC=''; spc1=`expr ${hc_cw} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done + echo -en "${idsCL[LightCyan]}${MSG}${MSG_SPC}: " if [ "${TEST}" != "true" ]; then run=$(${PW_FOLDER}/esxi-scripts/vm-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1) run=$(${PW_FOLDER}/esxi-scripts/iscsi-server-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1) fi - echo "Done" + echo -e "${idsCL[Green]}Done${idsCL[Default]}" done for ESXIHOST in "${PW_MAINHOSTS[@]}"; do - echo -en "${idsCL[LightCyan]}Waiting for VM's to power off to shutdown '${PW_ESXI_HOST_NAMES[${ESXIHOST}]}' ... " + MSG="Waiting for VM's to shutdown on '${PW_ESXI_HOST_NAMES[${ESXIHOST}]}'" + c=0; MSG_SPC=''; spc1=`expr ${hc_cw} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done + echo -en "${idsCL[LightCyan]}${MSG}${MSG_SPC}: " [ "${TEST}" != "true" ] && MAINT_MODE_VERIFY_SHUTDOWN ${ESXIHOST} & echo -e "${idsCL[Green]}Continuing in background\n" done @@ -1309,47 +1321,59 @@ SHUTDOWN_SERVERS(){ if [ ! -f ${PW_FOLDER}/shutdown.sys ]; then touch ${PW_FOLDER}/shutdown.sys - if [ "${1^^}" == "SYS" ]; then - echo -en "Disabling CLS in vCenter ... " - if [ "${TEST}" != "true" ]; then - run=$(ssh root@${PW_VCENTERHOST} "sed -i '//{n;s/.*<\/enabled>/False<\/enabled>/}' /etc/vmware-vpx/vpxd.cfg >/dev/null 2>&1" >/dev/null 2>&1) - run=$(ssh root@${PW_VCENTERHOST} "service-control --stop vmware-vpxd >/dev/null 2>&1" >/dev/null 2>&1) - run=$(ssh root@${PW_VCENTERHOST} "service-control --start vmware-vpxd >/dev/null 2>&1" >/dev/null 2>&1) - fi - echo "Done" + MSG="Disabling CLS in vCenter" + c=0; MSG_SPC=''; spc1=`expr ${hc_cw} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done + echo -en "${idsCL[LightCyan]}${MSG}${MSG_SPC}: " + if [ "${TEST}" != "true" ]; then + run=$(ssh root@${PW_VCENTERHOST} "sed -i '//{n;s/.*<\/enabled>/False<\/enabled>/}' /etc/vmware-vpx/vpxd.cfg >/dev/null 2>&1" >/dev/null 2>&1) + run=$(ssh root@${PW_VCENTERHOST} "service-control --stop vmware-vpxd >/dev/null 2>&1" >/dev/null 2>&1) + run=$(ssh root@${PW_VCENTERHOST} "service-control --start vmware-vpxd >/dev/null 2>&1" >/dev/null 2>&1) fi + echo -e "${idsCL[Green]}Done${idsCL[Default]}\n" for ESXIHOST in "${PW_SYSHOSTS[@]}"; do - echo -en "Stopping iSCSI-SYS VM's on: ${PW_ESXI_HOST_NAMES[${ESXIHOST}]} ... " + MSG="Stopping iSCSI-SYS VM's on: ${PW_ESXI_HOST_NAMES[${ESXIHOST}]}" + c=0; MSG_SPC=''; spc1=`expr ${hc_cw} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done + echo -en "${idsCL[LightCyan]}${MSG}${MSG_SPC}: " [ "${TEST}" != "true" ] && ${PW_FOLDER}/esxi-scripts/iscsi-sys-vm-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1 - echo "Done" + echo -e "${idsCL[Green]}Done${idsCL[Default]}" done + echo for ESXIHOST in "${PW_SYSHOSTS[@]}"; do - echo -en "Enabling Maintenance Mode on: ${PW_ESXI_HOST_NAMES[${ESXIHOST}]} ... " + MSG="Enabling Maintenance Mode on: ${PW_ESXI_HOST_NAMES[${ESXIHOST}]}" + c=0; MSG_SPC=''; spc1=`expr ${hc_cw} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done + echo -en "${idsCL[LightCyan]}${MSG}${MSG_SPC}: " [ "${TEST}" != "true" ] && run=$(${PW_FOLDER}/esxi-scripts/host-maintenance_mode.ps1 ${ESXIHOST} & >/dev/null 2>&1) - echo "Done" + echo -e "${idsCL[Green]}Done${idsCL[Default]}" done - # sleep 1m + echo for ESXIHOST in "${PW_SYSHOSTS[@]}"; do - echo -en "Verifying iSCSI-SYS VM's stopped on: ${PW_ESXI_HOST_NAMES[${ESXIHOST}]} ... " + MSG="Verifying iSCSI-SYS VM's stopped on: ${PW_ESXI_HOST_NAMES[${ESXIHOST}]}" + c=0; MSG_SPC=''; spc1=`expr ${hc_cw} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done + echo -en "${idsCL[LightCyan]}${MSG}${MSG_SPC}: " [ "${TEST}" != "true" ] && run=$(${PW_FOLDER}/esxi-scripts/iscsi-sys-vm-shutdown-verify.ps1 ${ESXIHOST} >/dev/null 2>&1) - echo "Done" + echo -e "${idsCL[Green]}Done${idsCL[Default]}" done + echo for ESXIHOST in "${PW_SYSHOSTS[@]}"; do - echo -en "Shutting Down VM's on: ${PW_ESXI_HOST_NAMES[${ESXIHOST}]} ... " + MSG="Shutting Down VM's on: ${PW_ESXI_HOST_NAMES[${ESXIHOST}]}" + c=0; MSG_SPC=''; spc1=`expr ${hc_cw} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done + echo -en "${idsCL[LightCyan]}${MSG}${MSG_SPC}: " if [ "${TEST}" != "true" ]; then ${PW_FOLDER}/esxi-scripts/vm-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1 ${PW_FOLDER}/esxi-scripts/iscsi-server-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1 fi - echo "Done" + echo -e "${idsCL[Green]}Done${idsCL[Default]}" done - + echo for ESXIHOST in "${PW_SYSHOSTS[@]}"; do - echo -en "${idsCL[LightCyan]}Waiting for VM's to power off to shutdown '${PW_ESXI_HOST_NAMES[${ESXIHOST}]}' ... " + MSG="${idsCL[LightCyan]}Waiting for VM's to power off to shutdown '${PW_ESXI_HOST_NAMES[${ESXIHOST}]}'" + c=0; MSG_SPC=''; spc1=`expr ${hc_cw} - ${#MSG}`; until [ ${c} = ${spc1} ]; do MSG_SPC="${MSG_SPC} "; ((c++)); done + echo -en "${idsCL[LightCyan]}${MSG}${MSG_SPC}: " [ "${TEST}" != "true" ] && MAINT_MODE_VERIFY_SHUTDOWN ${ESXIHOST} & echo -e "${idsCL[Green]}Continuing in background\n" done - + echo fi elif [ "${1^^}" == "ALL" ]; then @@ -1362,39 +1386,41 @@ SHUTDOWN_SERVERS(){ run=$(ssh root@${PW_VCENTERHOST} "service-control --stop vmware-vpxd >/dev/null 2>&1" >/dev/null 2>&1) run=$(ssh root@${PW_VCENTERHOST} "service-control --start vmware-vpxd >/dev/null 2>&1" >/dev/null 2>&1) fi - echo "Done" + echo -e "${idsCL[Green]}Done${idsCL[Default]}\n" for ESXIHOST in "${PW_MAINSITE_HOSTS[@]}"; do echo -en "Stopping all iSCSI VM's on: ${PW_ESXI_HOST_NAMES[${ESXIHOST}]} ... " [ "${TEST}" != "true" ] && ${PW_FOLDER}/esxi-scripts/iscsi-all-vm-shutdown.ps1 ${ESXIHOST} & >/dev/null 2>&1 - echo "Done" + echo -e "${idsCL[Green]}Done${idsCL[Default]}" done + echo for ESXIHOST in "${PW_MAINSITE_HOSTS[@]}"; do echo -en "Enabling Maintenance Mode on: ${PW_ESXI_HOST_NAMES[${ESXIHOST}]} ... " [ "${TEST}" != "true" ] && run=$(${PW_FOLDER}/esxi-scripts/host-maintenance_mode.ps1 ${ESXIHOST} & >/dev/null 2>&1) - echo "Done" + echo -e "${idsCL[Green]}Done${idsCL[Default]}" done - # sleep 1m + echo for ESXIHOST in "${PW_MAINSITE_HOSTS[@]}"; do echo -en "Verifying iSCSI-SYS VM's stopped on: ${PW_ESXI_HOST_NAMES[${ESXIHOST}]} ... " [ "${TEST}" != "true" ] && run=$(${PW_FOLDER}/esxi-scripts/iscsi-sys-vm-shutdown-verify.ps1 ${ESXIHOST} >/dev/null 2>&1) - echo "Done" + echo -e "${idsCL[Green]}Done${idsCL[Default]}" done + echo for ESXIHOST in "${PW_MAINSITE_HOSTS[@]}"; do echo -en "Shutting Down VM's on: ${PW_ESXI_HOST_NAMES[${ESXIHOST}]} ... " if [ "${TEST}" != "true" ]; then ${PW_FOLDER}/esxi-scripts/vm-shutdown.ps1 ${ESXIHOST} & >/dev/null 2>&1 ${PW_FOLDER}/esxi-scripts/iscsi-server-shutdown.ps1 ${ESXIHOST} & >/dev/null 2>&1 fi - echo "Done" + echo -e "${idsCL[Green]}Done${idsCL[Default]}" done - + echo for ESXIHOST in "${PW_MAINSITE_HOSTS[@]}"; do echo -en "${idsCL[LightCyan]}Waiting for VM's to power off to shutdown '${PW_ESXI_HOST_NAMES[${ESXIHOST}]}' ... " [ "${TEST}" != "true" ] && MAINT_MODE_VERIFY_SHUTDOWN ${ESXIHOST} & echo -e "${idsCL[Green]}Continuing in background\n" done - + echo fi elif [ "${1^^}" == "OFFSITE" ]; then @@ -1407,23 +1433,26 @@ SHUTDOWN_SERVERS(){ run=$(ssh root@${PW_VCENTERHOST} "service-control --stop vmware-vpxd >/dev/null 2>&1" >/dev/null 2>&1) run=$(ssh root@${PW_VCENTERHOST} "service-control --start vmware-vpxd >/dev/null & 2>&1" >/dev/null 2>&1) fi - echo "Done" + echo -e "${idsCL[Green]}Done${idsCL[Default]}\n" + for ESXIHOST in "${PW_OFFSITEHOSTS[@]}"; do echo -en "Enabling Maintenance Mode on: ${PW_ESXI_HOST_NAMES[${ESXIHOST}]} ... " [ "${TEST}" != "true" ] && run=$(${PW_FOLDER}/esxi-scripts/host-maintenance_mode.ps1 ${ESXIHOST} & >/dev/null 2>&1) - echo "Done" + echo -e "${idsCL[Green]}Done${idsCL[Default]}" done + echo for ESXIHOST in "${PW_OFFSITEHOSTS[@]}"; do echo -en "Stopping VM's on: ${PW_ESXI_HOST_NAMES[${ESXIHOST}]} ... " [ "${TEST}" != "true" ] && run=$(${PW_FOLDER}/esxi-scripts/vm-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1) - echo "Done" + echo -e "${idsCL[Green]}Done${idsCL[Default]}" done + echo for ESXIHOST in "${PW_OFFSITEHOSTS[@]}"; do echo -en "${idsCL[LightCyan]}Waiting for VM's to power off to shutdown '${PW_ESXI_HOST_NAMES[${ESXIHOST}]}' ... " [ "${TEST}" != "true" ] && MAINT_MODE_VERIFY_SHUTDOWN ${ESXIHOST} & echo -e "${idsCL[Green]}Continuing in background\n" done - + echo fi fi } @@ -1589,7 +1618,6 @@ SHUTDOWN_SERVER(){ } HOSTMGMT(){ - TEST=true echo -e "\n${idsCL[Yellow]}Host Controls${idsCL[Default]}" DIVIDER . yellow 75 @@ -1604,12 +1632,12 @@ HOSTMGMT(){ ESXIHOST=${PW_HOST_ADDRESSES[iDS-vMS-Host${HOST}]} elif [ "${PW_HOST_ADDRESSES[${HOST}]}" != "" ]; then ESXIHOST=${PW_HOST_ADDRESSES[${HOST}]} + elif [ "${1^^}" == "ALL" ] || [ "${1^^}" == "MAIN" ] || [ "${1^^}" == "SYS" ] || [ "${1^^}" == "OFFSITE" ]; then + ESXIHOST=${1^^} else ESXIHOST='' fi [ "${ESXIHOST}" == "" ] && echo -e "Invalid host\n" && exit 1 - tmp=${PW_ESXI_HOST_NAMES[${ESXIHOST}]} - idracip=${PW_HOST_IDRACS[${tmp}]} fi while [ $# -gt 0 ]; do @@ -1628,8 +1656,11 @@ HOSTMGMT(){ esac shift 1 done - + + tmp=${PW_ESXI_HOST_NAMES[${ESXIHOST}]} + idracip=${PW_HOST_IDRACS[${tmp}]} hostname=${PW_iDRACHOST_SHORTNAMES[${idracip}]} + c=0; spcA=''; spc1=`expr 21 - ${#hostname} - 1`; until [ ${c} = ${spc1} ]; do spcA="${spcA} "; c=`expr ${c} + 1`; done c=0; spcB=''; spc1=`expr 18 - ${#ESXIHOST} - 1`; until [ ${c} = ${spc1} ]; do spcB="${spcB} "; c=`expr ${c} + 1`; done echo -en "${idsCL[LightCyan]} Host: ${idsCL[Green]}${hostname}${spcA}" @@ -1641,12 +1672,24 @@ HOSTMGMT(){ ([ "${HOST}" == "" ] || ([ "${POWER}" == "" ] && [ "${ESXI}" == "" ])) && echo -e "Invalid command arguments\n" && exit 1 if [ "${MODE}" == "esxi" ]; then - if [ "${ESXI}" == "maint" ] || [ "${ESXI}" == "maintenance" ] || [ "${ESXI}" == "mm" ]; then - echo -e "${idsCL[LightGreen]}PUTTING HOST INTO MAINTENANCE MODE${idsCL[Default]}\n" - SHUTDOWN_SERVER ${HOST} maintenance + if [ "${ESXIHOST}" == "ALL" ] || [ "${ESXIHOST}" == "MAIN" ] || [ "${ESXIHOST}" == "SYS" ] || [ "${ESXIHOST}" == "OFFSITE" ]; then + if [ "${ESXI}" == "maint" ] || [ "${ESXI}" == "maintenance" ] || [ "${ESXI}" == "mm" ]; then + echo -e "${idsCL[LightGreen]}PUTTING '${ESXIHOST}' HOSTS INTO MAINTENANCE MODE${idsCL[Default]}\n" + SHUTDOWN_SERVERS ${ESXIHOST,,} maintenance + else + echo -e "${idsCL[LightGreen]}SHUTTING DOWN '${ESXIHOST}' HOSTS${idsCL[Default]}\n" + SHUTDOWN_SERVERS ${ESXIHOST,,} + fi + else - echo -e "${idsCL[LightGreen]}SHUTTING DOWN HOST${idsCL[Default]}\n" - SHUTDOWN_SERVER ${HOST} + if [ "${ESXI}" == "maint" ] || [ "${ESXI}" == "maintenance" ] || [ "${ESXI}" == "mm" ]; then + echo -e "${idsCL[LightGreen]}PUTTING HOST INTO MAINTENANCE MODE${idsCL[Default]}\n" + SHUTDOWN_SERVER ${HOST} maintenance + else + echo -e "${idsCL[LightGreen]}SHUTTING DOWN HOST${idsCL[Default]}\n" + SHUTDOWN_SERVER ${HOST} + fi + fi elif [ "${MODE}" == "power" ]; then