Created
February 7, 2019 15:12
-
-
Save mbaldessari/a60f5c23be2dd201574cbe971d8bd10e to your computer and use it in GitHub Desktop.
Destroy two controllers fully
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
set -eu | |
# This only works when ran from the undercloud on an infrared setup | |
SSH_OPT="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" | |
node0="controller-0" | |
node1="controller-1" | |
# Let's kill controller-0 and controller-1 leaving only controller-2 up | |
ctrl0=$(openstack server list -c ID -f value --name $node0) | |
ctrl1=$(openstack server list -c ID -f value --name $node1) | |
bmctrl0=$(openstack baremetal node list -c UUID -c "Instance UUID" -f value | grep "$ctrl0"|awk '{print $1}') | |
bmctrl1=$(openstack baremetal node list -c UUID -c "Instance UUID" -f value | grep "$ctrl1"|awk '{print $1}') | |
ipmictrl0=$(openstack baremetal node show -c driver_info -f value $bmctrl0 | python -c 'import sys; a = eval(sys.stdin.next()); print a["ipmi_address"]') | |
ipmictrl1=$(openstack baremetal node show -c driver_info -f value $bmctrl1 | python -c 'import sys; a = eval(sys.stdin.next()); print a["ipmi_address"]') | |
ipmictrlport0=$(openstack baremetal node show -c driver_info -f value $bmctrl0 | python -c 'import sys; a = eval(sys.stdin.next()); print a["ipmi_port"]') | |
ipmictrlport1=$(openstack baremetal node show -c driver_info -f value $bmctrl1 | python -c 'import sys; a = eval(sys.stdin.next()); print a["ipmi_port"]') | |
vmctrlfile0=$(ssh $SSH_OPT root@$ipmictrl0 "grep -rl $ipmictrlport0 /root/.vbmc" 2>/dev/null) | |
vmctrlfile1=$(ssh $SSH_OPT root@$ipmictrl1 "grep -rl $ipmictrlport1 /root/.vbmc" 2>/dev/null) | |
vmctrl0=$(ssh $SSH_OPT root@$ipmictrl0 "grep domain_name $vmctrlfile0 | tr -d '[:space:]' | cut -f2 -d\=" 2>/dev/null) | |
vmctrl1=$(ssh $SSH_OPT root@$ipmictrl1 "grep domain_name $vmctrlfile1 | tr -d '[:space:]' | cut -f2 -d\=" 2>/dev/null) | |
echo "Disable network access to ipmi for $node0 - $ipmictrl0:$ipmictrlport0" | |
ssh $SSH_OPT root@$ipmictrl0 "if ! iptables -C INPUT -p udp --dport $ipmictrlport0 -m comment --comment 'KILL_$node0' -j DROP; then iptables -I INPUT 1 -p udp --dport $ipmictrlport0 -m comment --comment 'KILL_$node0' -j DROP; fi" | |
echo "Disable network access to ipmi for $node1 - $ipmictrl1:$ipmictrlport1" | |
ssh $SSH_OPT root@$ipmictrl1 "if ! iptables -C INPUT -p udp --dport $ipmictrlport1 -m comment --comment 'KILL_$node1' -j DROP; then iptables -I INPUT 1 -p udp --dport $ipmictrlport1 -m comment --comment 'KILL_$node1' -j DROP; fi" | |
echo "Destroying VM $vmctrl0 on $ipmictrl0 and VM $vmctrl1 on $ipmictrl1" | |
ssh $SSH_OPT root@$ipmictrl0 "virsh destroy $vmctrl0" | |
ssh $SSH_OPT root@$ipmictrl1 "virsh destroy $vmctrl1" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment