Updated libs/virtualization.bash

This commit is contained in:
Xavier Logerais (Numericable - Ingénierie Système) 2014-08-29 14:36:28 +02:00
parent 34f4933dc2
commit c671ab5e1a

View File

@ -53,6 +53,19 @@ vm_create() {
} }
vm_delete() {
if [ $# -ne 2 ]; then echo "Usage : $0 hypervisor_name_or_ip vm_name"; return 1; fi
hypervisor=${1}
name=${2}
echo "Deleting VM ${name}"
virsh destroy ${name}
virsh undefine ${name}
virsh vol-delete --pool default ${name}
virsh vol-delete --pool lvm_guests_system ${name}
virsh vol-delete --pool lvm_guests_data ${name}
}
vm_start() { vm_start() {
if [ $# -ne 2 ]; then echo "Usage : $0 hypervisor_name_or_ip vm_name"; return 1; fi if [ $# -ne 2 ]; then echo "Usage : $0 hypervisor_name_or_ip vm_name"; return 1; fi
@ -167,6 +180,79 @@ vm_create_magick() {
} }
vm_create_magick2() {
if [ $# -ne 3 ]; then echo "Usage : $0 hypervisor_name_or_ip vm_name vm_template"; return 1; fi
hypervisor=${1}
name=${2}
template=${3}
# Define ressources based on template
case $template in
small)
vcpus="1,maxvcpus=2"
memory="1024,maxmemory=2048"
disk="/dev/lvm_guests_system/${name},size=10,bus=virtio,cache=writethrough,io=native"
;;
medium)
vcpus="vcpus=2,maxvcpus=4"
memory="memory=2048,maxmemory=4096"
disk="/dev/lvm_guests_system/${name},size=20,bus=virtio,cache=writethrough,io=native"
;;
large)
vcpus="vcpus=4,maxvcpus=8"
memory="memory=4096,maxmemory=8192"
disk="/dev/lvm_guests_system/${name},size=40,bus=virtio,cache=writethrough,io=native"
;;
esac
# Get ip and compute MAC
IFS='.' read -a array <<< "$(ssh admin dig +search +short ${name})"
ip=$(printf "%3d.%3d.%3d.%3d\n" ${array[0]} ${array[1]} ${array[2]} ${array[3]})
mac=$(printf "52:54:00:%02X:%02X:%02X\n" ${array[1]} ${array[2]} ${array[3]})
echo "Creating VM with virt-install"
echo " * mac = ${mac}"
echo " * ip = ${ip}"
virt-install --connect=qemu+ssh://${USER}@${hypervisor}/system \
--name="${name}" \
--description="${name}" \
--cpu=host \
--vcpus=${vcpus} \
--memory=${memory} \
--disk=${disk} \
--network=bridge=br192,mac=${mac},model=virtio \
--os-type=linux \
--os-variant=debianwheezy \
--boot=menu=on,useserial=on,network,hd \
--pxe \
--graphics=vnc \
--noautoconsole
echo "Done"
}
vm_change_bridge_magick() {
if [ $# -ne 3 ]; then echo "Usage : $0 hypervisor_name_or_ip vm_name vm_new_bridge"; return 1; fi
hypervisor=${1}
name=${2}
bridge=${3}
IFS='.' read -a array <<< "$(ssh admin dig +search +short ${name})"
ip=$(printf "%3d.%3d.%3d.%3d\n" ${array[0]} ${array[1]} ${array[2]} ${array[3]})
mac=$(printf "52:54:00:%02X:%02X:%02X\n" ${array[1]} ${array[2]} ${array[3]})
virsh --connect=qemu+ssh://${USER}@${hypervisor}/system domiflist ${name} --inactive
virsh --connect=qemu+ssh://${USER}@${hypervisor}/system detach-interface --config --domain ${name} --type bridge --mac ${mac}
virsh --connect=qemu+ssh://${USER}@${hypervisor}/system attach-interface --config --domain ${name} --type bridge --model virtio --mac ${mac} --source ${bridge}
virsh --connect=qemu+ssh://${USER}@${hypervisor}/system domiflist ${name} --inactive
}
#### bash completion #### bash completion
_hypervisors() { _hypervisors() {
@ -189,3 +275,5 @@ complete -W "$(_hypervisors)" vm_connect
complete -W "$(_hypervisors)" vm_change_bridge complete -W "$(_hypervisors)" vm_change_bridge
complete -W "$(_hypervisors)" vm_add_data_disk complete -W "$(_hypervisors)" vm_add_data_disk
complete -W "$(_hypervisors)" vm_create_magick complete -W "$(_hypervisors)" vm_create_magick
complete -W "$(_hypervisors)" vm_change_bridge_magick
complete -W "$(_hypervisors)" vm_change_bridge_magick2