hugo-teek is loading...

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

最后更新于:

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

(仅收藏)

http://blog.mykernel.cn/2021/01/13/kvm%E8%99%9A%E6%8B%9F%E6%9C%BA%E6%93%8D%E4%BD%9C/

image-20240401123050513

脚本位置:

https://onedayxyy.cn/scripts/safe_clone_kvm/safe_clone_kvm.sh

safe_clone_kvm.sh

  1[root@docusaurus-wiki safe_clone_kvm]#cat safe_clone_kvm.sh 
  2#!/bin/bash
  3#
  4#********************************************************************
  5#Author:                songliangcheng
  6#QQ:                    2192383945
  7#Date:                  2020-11-20
  8#FileName:             kvm.sh
  9#URL:                   http://www.magedu.com
 10#Description:          A test toy
 11#Copyright (C):        2020 All rights reserved
 12#********************************************************************
 13
 14
 15
 16
 17# 默认配置
 18DISK_SOURCE_PATH=/var/lib/libvirt/images/centos7-2003-template-1C1G.qcow2
 19DISK_PATH=/var/lib/libvirt/images/xxx.qcow2
 20DISK_SIZE=10G
 21VIRT_TYPE=kvm
 22NAME=vm1
 23RAM=512
 24VCPUS=1
 25CDROM=/usr/local/src/xxx.iso
 26BRIDGE1=
 27BRIDGE2=
 28
 29##############
 30
 31trap 'echo  -e "\n退出前操作\nerror line: $LINENO,error cmd: $BASH_COMMAND\n ${USAGE}"; rm -fr $DISK_PATH; virsh shutdown $NAME; virsh undefine $NAME' ERR
 32
 33USAGE="
 34使用帮助:
 35                ${0##*/} -i 模板路径 -d 目标磁盘路径 -t 类型 -n 虚拟机名称 -r 内存大小MB  -v CPU核心数 -b 网卡名 [-f 网卡名] 
 36                使用示例: ${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"
 37die() {
 38    [ "$#" -eq 0 ] || echo "$*" >&2
 39    exit 1
 40}
 41err() {
 42    echo "$*" >&2
 43}
 44
 45
 46while getopts "i:d:s:t:n:r:v:c:b:f:" opt
 47do
 48   case $opt in
 49        i)
 50        DISK_SOURCE_PATH=${OPTARG}
 51        ;;
 52        d)
 53        DISK_PATH=${OPTARG}
 54        ;;
 55        s)
 56        DISK_SIZE=${OPTARG}
 57        ;;
 58        t)
 59        VIRT_TYPE=${OPTARG}
 60        ;;
 61        n)
 62        NAME=${OPTARG}
 63        ;;
 64        r)
 65        RAM=${OPTARG}
 66        ;;
 67        v)
 68        VCPUS=${OPTARG}
 69        ;;
 70        c)
 71        CDROM=${OPTARG}
 72        ;;
 73        b)
 74        BRIDGE1=${OPTARG}
 75        ;;
 76        f)
 77        BRIDGE2=${OPTARG}
 78        ;;
 79        ?)
 80                die "$USAGE"
 81        ;;
 82   esac
 83done
 84
 85[ -n "$BRIDGE2" -a -n "$BRIDGE1" ] && NETOPTS="--network bridge=$BRIDGE1  --network bridge=$BRIDGE2"
 86[ -n "$BRIDGE2" -a -z "$BRIDGE1" ] && NETOPTS="--network bridge=$BRIDGE2"
 87[ -z "$BRIDGE2" -a -n "$BRIDGE1" ] && NETOPTS="--network bridge=$BRIDGE1"
 88[ -z "$BRIDGE2" -a -z "$BRIDGE1" ] && die "$USAGE"
 89
 90
 91if [ -f $DISK_PATH ]; then
 92        err "$DISK_PATH 磁盘路径已经存在, 不能创建"
 93        die "$USAGE"
 94else
 95        install -dv $(dirname $DISK_PATH)
 96fi
 97
 98if virsh list --all | grep -q $NAME; then
 99        err "$NAME 虚拟机名称已经被使用"
100        die "$USAGE"
101fi
102
103# 创建镜像
104echo "开始克隆 $DISK_SOURCE_PATH -> $DISK_PATH "
105cp "$DISK_SOURCE_PATH" "$DISK_PATH"
106
107# 启动虚拟机
108echo  "启动虚拟机"
109echo virt-install --virt-type $VIRT_TYPE --name $NAME  --ram $RAM --vcpus $VCPUS  --disk path="$DISK_PATH" --graphics vnc,listen=0.0.0.0 --noautoconsole --autostart ${NETOPTS} --import --cpu host
110virt-install --virt-type $VIRT_TYPE --name $NAME  --ram $RAM --vcpus $VCPUS  --disk path="$DISK_PATH" --graphics vnc,listen=0.0.0.0 --noautoconsole --autostart ${NETOPTS} --import --cpu host
111echo
112[root@docusaurus-wiki safe_clone_kvm]#
推荐使用微信支付
微信支付二维码
推荐使用支付宝
支付宝二维码
最新文章

文档导航