Skip to content

使用kvm批量创建虚拟机脚本

2020.11.20-使用kvm批量创建虚拟机脚本

(仅收藏)

http:#!/bin/bash##********************************************************************#Author:songliangcheng#QQ:2192383945#Date:2020-11-20#FileName: kvm.sh#URL:http:#Description: A test toy#Copyright (C):2020 All rights reserved#********************************************************************# 默认配置DISK_SOURCE_PATH=/var/lib/libvirt/images/centos7-2003-template-1C1G.qcow2DISK_PATH=/var/lib/libvirt/images/xxx.qcow2DISK_SIZE=10GVIRT_TYPE=kvmNAME=vm1RAM=512VCPUS=1CDROM=/usr/local/src/xxx.isoBRIDGE1=BRIDGE2=##############trap'echo -e "\n退出前操作\nerror line:$LINENO,error cmd:$BASH_COMMAND\n ${USAGE}";rm -fr $DISK_PATH;virsh shutdown $NAME;virsh undefine $NAME'ERRUSAGE="使用帮助:${0##*/}-i 模板路径 -d 目标磁盘路径 -t 类型 -n 虚拟机名称 -r 内存大小MB -v CPU核心数 -b 网卡名 [-f 网卡名] 使用示例:${0##*/}-i /var/lib/libvirt/images/centos7-2003-template-1C1G.qcow2 -d /var/lib/libvirt/images/xxx.qcow2 -t kvm|qemu -n vm1 -r 512 -v 1 -b br0 -f br1"die() {["$#"-eq0] ||echo"$*">&2exit1}err() {echo"$*">&2}whilegetopts"i:d:s:t:n:r:v:c:b:f:"optdocase$opt ini)DISK_SOURCE_PATH=${OPTARG};;d)DISK_PATH=${OPTARG};;s)DISK_SIZE=${OPTARG};;t)VIRT_TYPE=${OPTARG};;n)NAME=${OPTARG};;r)RAM=${OPTARG};;v)VCPUS=${OPTARG};;c)CDROM=${OPTARG};;b)BRIDGE1=${OPTARG};;f)BRIDGE2=${OPTARG};;?)die"$USAGE";;esacdone[-n"$BRIDGE2"-a-n"$BRIDGE1"] &&NETOPTS="--network bridge=$BRIDGE1--network bridge=$BRIDGE2"[-n"$BRIDGE2"-a-z"$BRIDGE1"] &&NETOPTS="--network bridge=$BRIDGE2"[-z"$BRIDGE2"-a-n"$BRIDGE1"] &&NETOPTS="--network bridge=$BRIDGE1"[-z"$BRIDGE2"-a-z"$BRIDGE1"] &&die"$USAGE"if[-f$DISK_PATH ];thenerr"$DISK_PATH磁盘路径已经存在,不能创建"die"$USAGE"elseinstall-dv$(dirname$DISK_PATH)fiifvirshlist--all|grep-q$NAME;thenerr"$NAME虚拟机名称已经被使用"die"$USAGE"fi# 创建镜像echo"开始克隆 $DISK_SOURCE_PATH->$DISK_PATH"cp"$DISK_SOURCE_PATH""$DISK_PATH"# 启动虚拟机echo"启动虚拟机"echovirt-install--virt-type$VIRT_TYPE --name$NAME --ram$RAM --vcpus$VCPUS --diskpath="$DISK_PATH"--graphicsvnc,listen=0.0.0.0--noautoconsole--autostart${NETOPTS} --import--cpuhostvirt-install--virt-type$VIRT_TYPE --name$NAME --ram$RAM --vcpus$VCPUS --diskpath="$DISK_PATH"--graphicsvnc,listen=0.0.0.0--noautoconsole--autostart${NETOPTS} --import--cpuhostecho[root@docusaurus-wiki safe_clone_kvm]#