Updated libs/virtualization.bash
This commit is contained in:
		
						parent
						
							34f4933dc2
						
					
				
				
					commit
					c671ab5e1a
				
			| @@ -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 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user