meta data for this page
Tömeges VM létrehozó szkript
Minta konfig fájl:
#OVS_NAME REPO_NAME POOL_NAME VM_NAME MEMORY_GB VCPU_COUNT BOOT_DISK_GB CD_NAME NETWORK_NAME
#!/bin/bash . ovm_functions.sh kulcs_ellenorzes [[ -e $1 ]] || { echo "Add meg a konfig fajlt parameterkent."; exit 1; } while read LINE; do OVS_NAME=$(echo $LINE | cut -d' ' -f 1) REPO_NAME=$(echo $LINE | cut -d' ' -f 2) POOL_NAME=$(echo $LINE | cut -d' ' -f 3) VM_NAME=$(echo $LINE | cut -d' ' -f 4) MEMORY_GB=$(echo $LINE | cut -d' ' -f 5) VCPU_COUNT=$(echo $LINE | cut -d' ' -f 6) BOOT_DISK_GB=$(echo $LINE | cut -d' ' -f 7) CD_NAME=$(echo $LINE | cut -d' ' -f 8) NETWORK_NAME=$(echo $LINE | cut -d' ' -f 9) echo "###### $VM_NAME letrehozasa ######" echo "Ellenorizd a parametereket:" echo -e "OVS: ${grn}${OVS_NAME}${end}, Repo: ${grn}${REPO_NAME}${end}, Pool: ${grn}${POOL_NAME}${end}, VM neve: ${grn}${VM_NAME}${end}," echo -e "Memoria [GB]: ${grn}${MEMORY_GB}${end}, vCPU szam: ${grn}${VCPU_COUNT}${end}, Boot disk [GB]: ${grn}${BOOT_DISK_GB}${end}, Boot CD image: ${grn}${CD_NAME}${end}, Network: ${grn}${NETWORK_NAME}${end}" # Megnezzuk, hogy ha letrehozzuk a vdisk-et, nem megy-e a repo meret 90% fole REPO_TOTAL_SIZE=$(ovm_exec "show repository name=$REPO_NAME" "File System Total \(GiB\)" | sed 's/\..*$//') REPO_USED_SIZE=$(ovm_exec "show repository name=$REPO_NAME" "File System Used \(GiB\)" | sed 's/\..*$//') REPO_USAGE_IF=$(echo "scale=2;($REPO_USED_SIZE + $BOOT_DISK_GB) / $REPO_TOTAL_SIZE * 100 / 1" | bc) REPO_USAGE_IF=$(echo $REPO_USAGE_IF/1 | bc) if [[ $REPO_USAGE_IF -gt 90 ]]; then echo -e "${red}A vdisk letrehozasaval a repo telitettsege 90% fole menne (${REPO_USAGE_IF}%), es az OCFS2 6% metaadatot is foglalhat.${end}" exit 1 else echo -e "Repo telitettseg az uj vdisk letrehozasa utan: ${REPO_USAGE_IF}%" fi echo "Ha ez nem stimmel, nyomj egy CTRL+C -t 10mp-en belül!" echo "-----------------" sleep 15 VM_ID=$(ovm_exec "create Vm name=\"$VM_NAME\" repository=\"$REPO_NAME\" domainType=XEN_HVM_PV_DRIVERS server=\"$OVS_NAME\" startPolicy=CURRENT_SERVER highAvailability=No restartActionOnCrash=STOP osType=\"Red Hat Enterprise Linux 7\" on ServerPool name=\"$POOL_NAME\"") [[ -z $VM_ID ]] && { echo -e "${red}create Vm HIBA!${end}"; continue; } ||echo "VM Id: ${grn}$VM_ID ${end}" VDISK_ID=$(ovm_exec "create VirtualDisk name=\"${VM_NAME}_rootvg\" size=$BOOT_DISK_GB sparse=No shareable=No on Repository name=\"$REPO_NAME\"") [[ -z $VDISK_ID ]] && { echo -e "${red}create VirtualDisk HIBA!${end}"; continue; } || echo "Vdisk Id: ${grn}$VDISK_ID ${end}" VDISK_MAP1=$(ovm_exec "create VmDiskMapping slot=0 virtualDisk=\"$VDISK_ID\" name=\"Boot Disk\" on Vm id=\"$VM_ID\"" "Status") [[ -z $VDISK_MAP1 ]] && { echo -e "${red}create VmDiskMapping HIBA!${end}"; continue; } || echo "Vdisk mapping: ${grn}$VDISK_MAP1 ${end}" VDISK_MAP2=$(ovm_exec "create VmDiskMapping slot=1 virtualCd=\"$CD_NAME\" name=\"CDROM Drive\" on Vm id=\"$VM_ID\"" "Status") [[ -z $VDISK_MAP2 ]] && { echo -e "${red}create VmDiskMapping HIBA!${end}"; continue; } || echo "CD mapping: ${grn}$VDISK_MAP2 ${end}" VNIC_ID=$(ovm_exec "create Vnic name=\"${VM_NAME}_vnic\" network=\"$NETWORK_NAME\" on Vm id=\"$VM_ID\"") [[ -z $VNIC_ID ]] && { echo -e "${red}create Vnic HIBA!${end}"; continue; } || echo "create Vnic: ${grn}$VNIC_ID ${end}" VNIC_MAC=$(ovm_exec "show vnic id=\"$VNIC_ID\"" "Mac Address") [[ -z $VNIC_ID ]] && { echo -e "${red}show Vnic HIBA!${end}"; continue; } || echo "Vnic MAC: ${grn}$VNIC_MAC ${end}" VNIC_ID=$(ovm_exec "edit vnic id=\"$VNIC_ID\" name=\"$VNIC_MAC\"" "Status") [[ -z $VNIC_ID ]] && { echo -e "${red}edit Vnic HIBA!${end}"; } || echo "edit Vnic: ${grn}$VNIC_ID ${end}" VM_EDIT=$(ovm_exec "edit Vm id=\"$VM_ID\" bootOrder='DISK,CDROM' memory=$(($MEMORY_GB * 1024)) memoryLimit=$(($MEMORY_GB*1024)) cpuCount=$VCPU_COUNT cpuCountLimit=$VCPU_COUNT" "Status") [[ -z $VM_EDIT ]] && { echo -e "${red}edit Vm HIBA!${end}"; } || echo "edit Vm: ${grn}$VM_EDIT ${end}" echo "###### A $VM_NAME kesz. ######" echo "10mp varakozas..." sleep 10 done <<< "`cat $1 | grep -v '^#' | sed 's/[[:space:]]\+/ /g' | tr -s '[:blank:]'`"