diff --git a/powerwall.sh b/powerwall.sh index df32026a..1d61f8cf 100755 --- a/powerwall.sh +++ b/powerwall.sh @@ -8,6 +8,7 @@ source /opt/idssys/defaults/default.inc source /opt/idssys/powerwall/defaults.inc source ${FOLDER}/powerwall.conf +TEST+true shopt -s lastpipe @@ -361,98 +362,116 @@ SHUTDOWN_SERVERS(){ if [ "${1}" = "MAIN" ]; then touch $FOLDER/shutdown.main echo -en "Disabling CLS in vCenter ... " - ssh root@${VCENTERHOST} "sed -i '//{n;s/.*<\/enabled>/False<\/enabled>/}' /etc/vmware-vpx/vpxd.cfg >/dev/null 2>&1" >/dev/null 2>&1 - ssh root@${VCENTERHOST} "service-control --stop vmware-vpxd >/dev/null 2>&1" >/dev/null 2>&1 - ssh root@${VCENTERHOST} "service-control --start vmware-vpxd >/dev/null 2>&1" >/dev/null 2>&1 + [ $TEST = true ] && ssh root@${VCENTERHOST} "sed -i '//{n;s/.*<\/enabled>/False<\/enabled>/}' /etc/vmware-vpx/vpxd.cfg >/dev/null 2>&1" >/dev/null 2>&1 + [ $TEST = true ] && ssh root@${VCENTERHOST} "service-control --stop vmware-vpxd >/dev/null 2>&1" >/dev/null 2>&1 + [ $TEST = true ] && ssh root@${VCENTERHOST} "service-control --start vmware-vpxd >/dev/null 2>&1" >/dev/null 2>&1 echo "Done" for ESXIHOST in "${ESXIHOSTS[@]}"; do echo -en "Stopping iSCSI VM's on: ${ESXIHOST} ... " - ${FOLDER}/esxi-scripts/iscsi-vm-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1 + [ $TEST = true ] && ${FOLDER}/esxi-scripts/iscsi-vm-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1 echo "Done" done for ESXIHOST in "${ESXIHOSTS[@]}"; do echo -en "Verifying iSCSI VM's stopped on: ${ESXIHOST} ... " - ${FOLDER}/esxi-scripts/iscsi-vm-shutdown-verify.ps1 ${ESXIHOST} >/dev/null 2>&1 + [ $TEST = true ] && ${FOLDER}/esxi-scripts/iscsi-vm-shutdown-verify.ps1 ${ESXIHOST} >/dev/null 2>&1 echo "Done" done # sleep 1m for ESXIHOST in "${MAINHOSTS[@]}"; do echo -en "Stopping Remaining VM's on: ${ESXIHOST} ... " - ssh root@${ESXIHOST} 'esxcli system maintenanceMode set -e true -t 0' & - ${FOLDER}/esxi-scripts/vm-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1 - ${FOLDER}/esxi-scripts/iscsi-server-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1 + if [ $TEST = true ]; then + ssh root@${ESXIHOST} 'esxcli system maintenanceMode set -e true -t 0' & + ${FOLDER}/esxi-scripts/vm-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1 + ${FOLDER}/esxi-scripts/iscsi-server-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1 + fi echo "Done" done sleep 1m for ESXIHOST in "${MAINHOSTS[@]}"; do echo -en "Shutting down host: ${ESXIHOST} ..." - ssh root@${ESXIHOST} 'esxcli system shutdown poweroff -d 10 -r "Automated ESXi host shutdown"' - ssh root@${ESXIHOST} 'esxcli system maintenanceMode set -e false -t 0' + if [ $TEST = true ]; then + ssh root@${ESXIHOST} 'esxcli system shutdown poweroff -d 10 -r "Automated ESXi host shutdown"' + ssh root@${ESXIHOST} 'esxcli system maintenanceMode set -e false -t 0' + fi echo "Done" done for ESXIHOST in "${MAINHOSTS[@]}"; do echo -en "Waiting for Host (${ESXIHOST}) to shutdown... " - while ping -qw 10 -c3 "${ESXIHOST}">/dev/null 2>&1; do - sleep 1 - done + if [ $TEST = true ]; then + while ping -qw 10 -c3 "${ESXIHOST}">/dev/null 2>&1; do + sleep 1 + done + fi echo "Done" done elif [ "${1}" = "SYS" ]; then - [ ! -f $FOLDER/shutdown.main ] && [ "${2}" == "TEMP" ] && SHUTDOWN_SERVERS MAIN - touch $FOLDER/shutdown.sys + [ ! -f $FOLDER/shutdown.main ] && [ "${2}" == "TEMP" ] && [ $TEST != true ] && SHUTDOWN_SERVERS MAIN + [ $TEST = true ] && touch $FOLDER/shutdown.sys for ESXIHOST in "${SYSHOSTS[@]}"; do echo -en "Suspending DB, PiHole & vCenter VM's on: ${ESXIHOST} ... " - ${FOLDER}/esxi-scripts/sys-suspend.ps1 ${ESXIHOST} >/dev/null 2>&1 + [ $TEST = true ] && ${FOLDER}/esxi-scripts/sys-suspend.ps1 ${ESXIHOST} >/dev/null 2>&1 + echo "Done" + done + for ESXIHOST in "${SYSHOSTS[@]}"; do + echo -en "Shutting Down VM's on: ${ESXIHOST} ... " + if [ $TEST = true ]; then + ${FOLDER}/esxi-scripts/vm-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1 + ${FOLDER}/esxi-scripts/iscsi-server-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1 + fi + echo "Done" + done + for ESXIHOST in "${SYSHOSTS[@]}"; do + echo -en "Shutting Down Host: ${ESXIHOST} ... " + if [ $TEST = true ]; then + ssh root@${ESXIHOST} 'esxcli system maintenanceMode set -e true -t 0' + ssh root@${ESXIHOST} 'esxcli system shutdown poweroff -d 10 -r "Automated ESXi host shutdown"' & + ssh root@${ESXIHOST} 'esxcli system maintenanceMode set -e false -t 0' + fi + echo "Done" + done + + for ESXIHOST in "${SYSHOSTS[@]}"; do + echo -en "Waiting for Host (${ESXIHOST}) to shutdown ... " + if [ $TEST = true ]; then + while ping -qw 10 -c3 "${ESXIHOST}">/dev/null 2>&1; do + sleep 1 + done + fi echo "Done" done - # for ESXIHOST in "${SYSHOSTS[@]}"; do - # echo -en "Shutting Down VM's on: ${ESXIHOST} ... " - # ${FOLDER}/esxi-scripts/vm-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1 - # ${FOLDER}/esxi-scripts/iscsi-server-shutdown.ps1 ${ESXIHOST} >/dev/null 2>&1 - # echo "Done" - # done - # for ESXIHOST in "${SYSHOSTS[@]}"; do - # echo -en "Shutting Down Host: ${ESXIHOST} ... " - # ssh root@${ESXIHOST} 'esxcli system maintenanceMode set -e true -t 0' - # ssh root@${ESXIHOST} 'esxcli system shutdown poweroff -d 10 -r "Automated ESXi host shutdown"' & - # ssh root@${ESXIHOST} 'esxcli system maintenanceMode set -e false -t 0' - # echo "Done" - # done - # - # for ESXIHOST in "${SYSHOSTS[@]}"; do - # echo -en "Waiting for Host (${ESXIHOST}) to shutdown ... " - # while ping -qw 10 -c3 "${ESXIHOST}">/dev/null 2>&1; do - # sleep 1 - # done - # echo "Done" - # done fi } SHUTDOWN_SERVER(){ echo -en "Enabling Maintenance mode and will wait for iSCSI VM's to begin migrating ... " - ${FOLDER}/esxi-scripts/host-maintenance_mode.ps1 ${ESXI_HOST_NAMES[${1}]} & >/dev/null 2>&1 + [ $TEST = true ] && ${FOLDER}/esxi-scripts/host-maintenance_mode.ps1 ${ESXI_HOST_NAMES[${1}]} & >/dev/null 2>&1 sleep 45s echo "Done" echo -en "Shutting Down VM's on: ${1} ... " - ${FOLDER}/esxi-scripts/vm-shutdown.ps1 ${1} >/dev/null 2>&1 - ${FOLDER}/esxi-scripts/iscsi-server-shutdown.ps1 ${1} >/dev/null 2>&1 + if [ $TEST = true ]; then + ${FOLDER}/esxi-scripts/vm-shutdown.ps1 ${1} >/dev/null 2>&1 + ${FOLDER}/esxi-scripts/iscsi-server-shutdown.ps1 ${1} >/dev/null 2>&1 + fi echo "Done" echo -en "Shutting Down Host: ${1} ... " - ssh root@${1} 'esxcli system shutdown poweroff -d 10 -r "Automated ESXi host shutdown"' & >/dev/null 2>&1 - ssh root@${1} 'esxcli system maintenanceMode set -e false -t 0' >/dev/null 2>&1 + if [ $TEST = true ]; then + ssh root@${1} 'esxcli system shutdown poweroff -d 10 -r "Automated ESXi host shutdown"' & >/dev/null 2>&1 + ssh root@${1} 'esxcli system maintenanceMode set -e false -t 0' >/dev/null 2>&1 + fi echo "Done" echo -en "Waiting for Host (${1}) to shutdown ... " + if [ $TEST = true ]; then while ping -qw 10 -c3 "${1}">/dev/null 2>&1; do sleep 1 done + fi echo "Done" }