--
:
--
:
--
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/

脚本位置:
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]#
📡
👤
作者:
余温Gueen
🌐
版权:
本站文章除特别声明外,均采用
CC BY-NC-SA 4.0
协议,转载请注明来自
余温Gueen Blog!
推荐使用微信支付

推荐使用支付宝
