#!/bin/bash # Manage VM nodes which have a specific set of hardware attributes. if [ "$EUID" -ne 0 ] then echo "Please run as root" exit fi function main { case "$1" in "create-docker") create_docker;; "create-rkt") create_rkt;; "create-uefi") create_uefi;; "start") start;; "reboot") reboot;; "shutdown") shutdown;; "poweroff") poweroff;; "destroy") destroy;; *) usage exit 2 ;; esac } function usage { echo "USAGE: ${0##*/} " echo "Commands:" echo -e "\tcreate-docker\tcreate libvirt nodes on the docker0 bridge" echo -e "\tcreate-rkt\tcreate libvirt nodes on a rkt CNI metal0 bridge" echo -e "\tcreate-uefi\tcreate UEFI libvirt nodes on the rkt CNI metal0 bridge" echo -e "\tstart\t\tstart the libvirt nodes" echo -e "\treboot\t\treboot the libvirt nodes" echo -e "\tshutdown\tshutdown the libvirt nodes" echo -e "\tpoweroff\tpoweroff the libvirt nodes" echo -e "\tdestroy\t\tdestroy the libvirt nodes" } function create_docker { virt-install --name node1 --pxe --disk pool=default,size=6 --boot=hd,network --network=bridge:docker0,mac=52:54:00:a1:9c:ae --memory=1024 --vcpus=1 --os-type=linux --noautoconsole virt-install --name node2 --pxe --disk pool=default,size=6 --boot=hd,network --network=bridge:docker0,mac=52:54:00:b2:2f:86 --memory=1024 --vcpus=1 --os-type=linux --noautoconsole virt-install --name node3 --pxe --disk pool=default,size=6 --boot=hd,network --network=bridge:docker0,mac=52:54:00:c3:61:77 --memory=1024 --vcpus=1 --os-type=linux --noautoconsole virt-install --name node4 --pxe --disk pool=default,size=6 --boot=hd,network --network=bridge:docker0,mac=52:54:00:d7:99:c7 --memory=1024 --vcpus=1 --os-type=linux --noautoconsole } function create_rkt { virt-install --name node1 --pxe --disk pool=default,size=6 --boot=hd,network --network=bridge:metal0,mac=52:54:00:a1:9c:ae --memory=1024 --vcpus=1 --os-type=linux --noautoconsole virt-install --name node2 --pxe --disk pool=default,size=6 --boot=hd,network --network=bridge:metal0,mac=52:54:00:b2:2f:86 --memory=1024 --vcpus=1 --os-type=linux --noautoconsole virt-install --name node3 --pxe --disk pool=default,size=6 --boot=hd,network --network=bridge:metal0,mac=52:54:00:c3:61:77 --memory=1024 --vcpus=1 --os-type=linux --noautoconsole virt-install --name node4 --pxe --disk pool=default,size=6 --boot=hd,network --network=bridge:metal0,mac=52:54:00:d7:99:c7 --memory=1024 --vcpus=1 --os-type=linux --noautoconsole } function create_uefi { virt-install --name node1 --pxe --disk pool=default,size=6 --boot=uefi,network --network=bridge=metal0,model=e1000,mac=52:54:00:a1:9c:ae --memory=1024 --vcpus=1 --os-type=linux --noautoconsole virt-install --name node2 --pxe --disk pool=default,size=6 --boot=uefi,network --network=bridge=metal0,model=e1000,mac=52:54:00:b2:2f:86 --memory=1024 --vcpus=1 --os-type=linux --noautoconsole virt-install --name node3 --pxe --disk pool=default,size=6 --boot=uefi,network --network=bridge=metal0,model=e1000,mac=52:54:00:c3:61:77 --memory=1024 --vcpus=1 --os-type=linux --noautoconsole virt-install --name node4 --pxe --disk pool=default,size=6 --boot=uefi,network --network=bridge=metal0,model=e1000,mac=52:54:00:d7:99:c7 --memory=1024 --vcpus=1 --os-type=linux --noautoconsole } nodes=(node1 node2 node3 node4) function start { for node in ${nodes[@]}; do virsh start $node done } function reboot { for node in ${nodes[@]}; do virsh reboot $node done } function shutdown { for node in ${nodes[@]}; do virsh shutdown $node done } function poweroff { for node in ${nodes[@]}; do virsh destroy $node done } function destroy { for node in ${nodes[@]}; do virsh destroy $node done for node in ${nodes[@]}; do virsh undefine $node done virsh pool-refresh default for node in ${nodes[@]}; do virsh vol-delete --pool default $node.qcow2 done } main $@