Skip to content

Instantly share code, notes, and snippets.

@mbaldessari
Created February 7, 2019 15:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mbaldessari/a60f5c23be2dd201574cbe971d8bd10e to your computer and use it in GitHub Desktop.
Save mbaldessari/a60f5c23be2dd201574cbe971d8bd10e to your computer and use it in GitHub Desktop.
Destroy two controllers fully
#!/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