• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

zzxia-kvm-manage: 对KVM虚拟机的批量克隆、修改、删除、启动、关闭 ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

zzxia-kvm-manage

开源软件地址:

https://gitee.com/zhf_sy/zzxia-kvm-manage

开源软件介绍:

zzxia-kvm-manage

1 介绍

批量克隆、修改、删除、启动、自动启动、关闭KVM虚拟机。适合小企业使用。

1.1 功能:

  1. 克隆虚拟机:通过编辑list.csv文件定义虚拟机信息,然后运行vm-clone.sh,选择克隆模板,然后按照list.csv清单克隆出想要的虚拟机
  2. 修改虚拟机信息:【主机名、IP、IP子网掩码、网关、域名、DNS】,一般主要配合vm-clone.sh使用,也可以单独使用
  3. 批量启动指定虚拟机;批量启动清单中的虚拟机;批量启动选择的虚拟机
  4. 批量设置自动启动指定虚拟机;批量设置自动启动清单中的虚拟机;批量设置自动启动选择的虚拟机
  5. 批量关闭指定虚拟机;批量关闭清单中的虚拟机;批量关闭选择的虚拟机
  6. 批量删除指定虚拟机;批量删除清单中的虚拟机;批量删除选择的虚拟机

1.2 喜欢她,就满足她:

  1. 【Star】她,让她看到你是爱她的;
  2. 【Watching】她,时刻感知她的动态;
  3. 【Fork】她,为她增加新功能,修Bug,让她更加卡哇伊;
  4. 【Issue】她,告诉她有哪些小脾气,她会改的,手动小绵羊;
  5. 【打赏】她,为她买jk;
打赏

2 软件架构

Linux shell

3 安装教程

克隆到KVM服务器上即可

4 使用说明

请使用-h|--help参数运行sh脚本即可看到使用帮助除了kvm,你还需要安装guestfs,在centos7上运行yum install -y libguestfs-tools

4.1 环境变量文件kvm.env

基于kvm.env.sample创建环境变量文件kvm.env,根据你的环境修改相关环境变量,这个非常重要,否则你可能运行出错

$ cat kvm.env #!/bin/bash# 静默方式export QUIET='no'     #--- yes|no#export VM_XML_PATH='/etc/libvirt/qemu'          #--- KVM虚拟机配置文件路径(系统默认路径,一般无需修改)export VM_IMG_PATH='/var/lib/libvirt/images'    #--- 新虚拟机文件路径#export TEMPLATE_VM_NET_ON_KVM='br1'             #--- 虚拟机模板使用的KVM网卡名export TEMPLATE_VM_LV='/dev/mapper/cl-root'                                 #--- 虚拟机模板中挂载到【/】的卷export TEMPLATE_VM_NET_1_FILE='/etc/sysconfig/network-scripts/ifcfg-eth0'   #--- 虚拟机模板系统内的网卡配置文件

4.2 虚拟机列表文件list.csv

基于list.csv.sample创建虚拟机列表文件list.csv(默认,文件名可以是其他名称),根据自己的需要定制虚拟机信息,以逗号分隔,用#注释掉不需要的行:

$ cat list.csv # VM_NAME,CPU(个),MEM(GB),NET名, IP1,IP_MASK1,GATEWAY1 ,DOMAIN,DNS1 DNS2################################################################################################## testv-192-168-11-190-deploy,1,2,br1,192.168.11.190,24,192.168.11.1,zjlh.lan,192.168.11.3 192.168.11.4v-192-168-11-191-mast,4,8,br1,192.168.11.191,24,192.168.11.1,zjlh.lan,192.168.11.3 192.168.11.4v-192-168-11-192-node,4,8,br1,192.168.11.192,24,192.168.11.1,zjlh.lan,192.168.11.3 192.168.11.4v-192-168-11-193-node,4,8,br1,192.168.11.193,24,192.168.11.1,zjlh.lan,192.168.11.3 192.168.11.4v-192-168-11-194-etcd,2,4,br1,192.168.11.194,24,192.168.11.1,zjlh.lan,192.168.11.3 192.168.11.4#v-192-168-11-195-etcd,2,4,br1,192.168.11.195,24,192.168.11.1,zjlh.lan,192.168.11.3 192.168.11.4#v-192-168-11-196-etcd,2,4,br1,192.168.11.196,24,192.168.11.1,zjlh.lan,192.168.11.3 192.168.11.4v-192-168-11-197-repo,2,4,br1,192.168.11.197,24,192.168.11.1,zjlh.lan,192.168.11.3 192.168.11.4

4.3 克隆

克隆前的建议:

  • 建议先制作好一个较为完美的模板虚拟机,然后在克隆时选择使用他
  • 查看KVM环境变量文件kvm.env,看是否与你的实际情况相同,否则请修改它
$ ./vm-clone.sh --help    用途:KVM上虚拟机克隆,并修改相关信息(主机名、IP、IP子网掩码、网关、域名、DNS)    依赖:        ./vm-img-modify.sh    注意:本脚本在centos 7上测试通过    用法:        ./vm-clone.sh  [-h|--help]        ./vm-clone.sh  <-f|--file {清单文件}>  < -q|--quiet  [-t|--template {虚拟机模板}] >        ./vm-clone.sh  <-f|--file {清单文件}>  <-t|--template {虚拟机模板}>    参数说明:        $0   : 代表脚本本身        []   : 代表是必选项        <>   : 代表是可选项        |    : 代表左右选其一        {}   : 代表参数值,请替换为具体参数值        %    : 代表通配符,非精确值,可以被包含        #        -h|--help      此帮助        -f|--file      虚拟机清单文件,默认为【./list.csv】            文件格式如下(字段之间用【,】分隔):            #VM_NAME,CPU(个),MEM(GB),NET名, IP1,IP_MASK1,GATEWAY1 ,DOMAIN,DNS1 DNS2            v-192-168-1-2-nextcloud,2,4,br1, 192.168.1.2,24,192.168.11.1, zjlh.lan,192.168.11.3 192.168.11.4            v-192-168-1-3-nexxxx,2,4,br1, 192.168.1.3,24,192.168.11.1, zjlh.lan,192.168.11.3        -q|--quiet     静默方式        -t|--templat   指定虚拟机模板    示例:        #        ./vm-clone.sh  -h        # 一般        ./vm-clone.sh                       #--- 默认虚拟机清单文件【./list.csv】,非静默方式,手动选择模板        ./vm-clone.sh  -t v-centos-1        #--- 默认虚拟机清单文件【./list.csv】,非静默方式,基于模板【v-centos-1】创建        # 指定vm清单文件        ./vm-clone.sh  -f vm.list                      #--- 使用虚拟机清单文件【vm.list】,非静默方式,手动选择模        ./vm-clone.sh  -f vm.list  -t v-centos-1       #--- 使用虚拟机清单文件【vm.list】,非静默方式,基于模板【v-centos-1】创建        # 静默方式        ./vm-clone.sh  -q  -t v-centos-1               #--- 默认虚拟机清单文件【./list.csv】,静默方式,基于模板【v-centos-1】创建        ./vm-clone.sh  -q  -t v-centos-1  -f vm.list   #--- 使用虚拟机清单文件【vm.list】,静默方式,基于模板【v-centos-1】创建

4.4 修改vm信息

$ ./vm-img-modify.sh     用途:修改KVM虚拟机主机名及网卡信息(主机名、IP、IP子网掩码、网关、域名、DNS)    依赖:    注意:本脚本在centos 7上测试通过    用法:        ./vm-img-modify.sh  [-h|--help]        ./vm-img-modify.sh  <-q|--quiet>  [ {VM_NAME}  {NEW_IP}  {NEW_IP_MASK}  {NEW_GATEWAY} ]  <{NEW_DOMAIN}>  <{NEW_DNS1}>  <{NEW_DNS2}>    参数说明:        $0   : 代表脚本本身        []   : 代表是必选项        <>   : 代表是可选项        |    : 代表左右选其一        {}   : 代表参数值,请替换为具体参数值        %    : 代表通配符,非精确值,可以被包含        #        -h|--help      此帮助        -q|--quiet     静默方式    示例:        #        ./vm-img-modify.sh  -h        #--- 帮助        # 一般        ./vm-img-modify.sh  v-192-168-1-3-nexxxx  192.168.1.3  24  192.168.11.1  zjlh.lan  192.168.11.3  192.168.11.4        ./vm-img-modify.sh  v-192-168-1-3-nexxxx  192.168.1.3  24  192.168.11.1        # 静默方式        ./vm-img-modify.sh  -q  v-192-168-1-3-nexxxx  192.168.1.3  24  192.168.11.1  zjlh.lan  192.168.11.3  192.168.11.4

4.5 启动(或自动启动)虚拟机

$ ./vm-start.sh -h    用途:启动虚拟机;设置虚拟机自动启动    依赖:    注意:本脚本在centos 7上测试通过    用法:        ./vm-start.sh  [-h|--help]        ./vm-start.sh  [-l|--list]        ./vm-start.sh  [ <-s|--start>  <-a|--autostart> ]  [ [-f|--file {清单文件}] | [-S|--select] | [-A|--ARG {虚拟机1} {虚拟机2} ... {虚拟机n}] ]    参数说明:        $0   : 代表脚本本身        []   : 代表是必选项        <>   : 代表是可选项        |    : 代表左右选其一        {}   : 代表参数值,请替换为具体参数值        %    : 代表通配符,非精确值,可以被包含        #        -h|--help      此帮助        -l|--list      列出KVM上的虚拟机        -s|--start     启动虚拟机        -a|--autostart 开启自动启动虚拟机        -f|--file      从文件选择虚拟机(默认),默认文件为【./list.csv】            文件格式如下(字段之间用【,】分隔):            #VM_NAME,CPU(个),MEM(GB),NET名, IP1,IP_MASK1,GATEWAY1 ,DOMAIN,DNS1 DNS2            v-192-168-1-2-nextcloud,2,4,br1, 192.168.1.2,24,192.168.11.1, zjlh.lan,192.168.11.3 192.168.11.4            v-192-168-1-3-nexxxx,2,4,br1, 192.168.1.3,24,192.168.11.1, zjlh.lan,192.168.11.3        -S|--select    从KVM中选择虚拟机        -A|--ARG       从参数获取虚拟机    示例:        #        ./vm-start.sh  -h                   #--- 帮助        ./vm-start.sh  -l                   #--- 列出KVM上的虚拟机        # 一般(默认从默认文件)        ./vm-start.sh  -s                   #--- 启动默认虚拟机清单文件【./list.csv】中的虚拟机        ./vm-start.sh  -s  -a               #--- 启动默认虚拟机清单文件【./list.csv】中的虚拟机,并设置为自动启动        ./vm-start.sh  -a                   #--- 自动启动默认虚拟机清单文件【./list.csv】中的虚拟机        # 从指定文件        ./vm-start.sh  -s  -f my_vm.list    #--- 启动虚拟机清单文件【my_vm.list】中的虚拟机        ./vm-start.sh  -a  -f my_vm.list    #--- 自动启动虚拟机清单文件【my_vm.list】中的虚拟机        # 我选择        ./vm-start.sh  -s  -S               #--- 启动我选择的虚拟机        ./vm-start.sh  -a  -S               #--- 自动启动我选择的虚拟机        # 指定虚拟机        ./vm-start.sh  -s  -A  vm1 vm2      #--- 启动虚拟机【vm1、vm2】        ./vm-start.sh  -a  -A  vm1 vm2      #--- 自动启动虚拟机【vm1、vm2】

4.6 关闭虚拟机

$ ./vm-shutdown.sh -h    用途:shutdown虚拟机    依赖:    注意:本脚本在centos 7上测试通过    用法:        ./vm-shutdown.sh  [-h|--help]        ./vm-shutdown.sh  [-l|--list]        ./vm-shutdown.sh  <-q|--quiet>  [ [-f|--file {清单文件}] | [-S|--select] | [-A|--ARG {虚拟机1} {虚拟机2} ... {虚拟机n}] ]    参数说明:        $0   : 代表脚本本身        []   : 代表是必选项        <>   : 代表是可选项        |    : 代表左右选其一        {}   : 代表参数值,请替换为具体参数值        %    : 代表通配符,非精确值,可以被包含        #        -h|--help      此帮助        -l|--list      列出KVM上的虚拟机        -f|--file      从文件选择虚拟机(默认),默认文件为【./list.csv】            文件格式如下(字段之间用【,】分隔):            #VM_NAME,CPU(个),MEM(GB),NET名, IP1,IP_MASK1,GATEWAY1 ,DOMAIN,DNS1 DNS2            v-192-168-1-2-nextcloud,2,4,br1, 192.168.1.2,24,192.168.11.1, zjlh.lan,192.168.11.3 192.168.11.4            v-192-168-1-3-nexxxx,2,4,br1, 192.168.1.3,24,192.168.11.1, zjlh.lan,192.168.11.3        -S|--select    从KVM中选择虚拟机        -A|--ARG       从参数获取虚拟机        -q|--quiet     静默方式    示例:        #        ./vm-shutdown.sh  -h               #--- 帮助        ./vm-shutdown.sh  -l               #--- 列出KVM上的虚拟机        # 一般(默认从默认文件)        ./vm-shutdown.sh                   #--- shutdown默认虚拟机清单文件【./list.csv】中的虚拟机        # 从指定文件        ./vm-shutdown.sh  -f my_vm.list    #--- shutdown虚拟机清单文件【my_vm.list】中的虚拟机        # 我选择        ./vm-shutdown.sh  -S               #--- shutdown我选择的虚拟机        # 指定虚拟机        ./vm-shutdown.sh  -A  vm1 vm2      #--- shutdown虚拟机【vm1、vm2】        # 静默方式        ./vm-shutdown.sh  -q               #--- shutdown默认虚拟机清单文件【./list.csv】中的虚拟机,用静默方式        ./vm-shutdown.sh  -q  -f my_vm.list #--- shutdown虚拟机清单文件【my_vm.list】中的虚拟机,用静默方式        ./vm-shutdown.sh  -q  -S           #--- shutdown我选择的虚拟机,用静默方式        ./vm-shutdown.sh  -q  -A  vm1 vm2  #--- shutdown虚拟机【vm1、vm2】,用静默方式

4.7 删除虚拟机

$ ./vm-rm.sh -h    用途:删除虚拟机    依赖:    注意:本脚本在centos 7上测试通过    用法:        ./vm-rm.sh  [-h|--help]        ./vm-rm.sh  [-l|--list]        ./vm-rm.sh  <-q|--quiet>  [ [-f|--file {清单文件}] | [-S|--select] | [-A|--ARG {虚拟机1} {虚拟机2} ... {虚拟机n}] ]    参数说明:        $0   : 代表脚本本身        []   : 代表是必选项        <>   : 代表是可选项        |    : 代表左右选其一        {}   : 代表参数值,请替换为具体参数值        %    : 代表通配符,非精确值,可以被包含        #        -h|--help      此帮助        -l|--list      列出KVM上的虚拟机        -f|--file      从文件选择虚拟机(默认),默认文件为【./list.csv】            文件格式如下(字段之间用【,】分隔):            #VM_NAME,CPU(个),MEM(GB),NET名, IP1,IP_MASK1,GATEWAY1 ,DOMAIN,DNS1 DNS2            v-192-168-1-2-nextcloud,2,4,br1, 192.168.1.2,24,192.168.11.1, zjlh.lan,192.168.11.3 192.168.11.4            v-192-168-1-3-nexxxx,2,4,br1, 192.168.1.3,24,192.168.11.1, zjlh.lan,192.168.11.3        -S|--select    从KVM中选择虚拟机        -A|--ARG       从参数获取虚拟机        -q|--quiet     静默方式    示例:        #        ./vm-rm.sh  -h               #--- 帮助        ./vm-rm.sh  -l               #--- 列出KVM上的虚拟机        # 一般(默认从默认文件)        ./vm-rm.sh                   #--- 删除默认虚拟机清单文件【./list.csv】中的虚拟机        # 从指定文件        ./vm-rm.sh  -f my_vm.list    #--- 删除虚拟机清单文件【my_vm.list】中的虚拟机        # 我选择        ./vm-rm.sh  -S               #--- 删除我选择的虚拟机        # 指定虚拟机        ./vm-rm.sh  -A  vm1 vm2      #--- 删除虚拟机【vm1、vm2】        # 静默方式        ./vm-rm.sh  -q               #--- 删除默认虚拟机清单文件【./list.csv】中的虚拟机,用静默方式        ./vm-rm.sh  -q  -f my_vm.list #--- 删除虚拟机清单文件【my_vm.list】中的虚拟机,用静默方式        ./vm-rm.sh  -q  -S           #--- 删除我选择的虚拟机,用静默方式        ./vm-rm.sh  -q  -A  vm1 vm2  #--- 删除虚拟机【vm1、vm2】,用静默方式

4.8 列出已有虚拟机

$ ./vm-list.sh -h    用途:列出KVM上的虚拟机    依赖:    注意:本脚本在centos 7上测试通过    用法:        ./vm-list.sh  <-h|--help>    参数说明:        $0   : 代表脚本本身        []   : 代表是必选项        <>   : 代表是可选项        |    : 代表左右选其一        {}   : 代表参数值,请替换为具体参数值        %    : 代表通配符,非精确值,可以被包含        #        -h|--help      此帮助    示例:        #        ./vm-list.sh  -h                   #--- 帮助        ./vm-list.sh                       #--- 列出KVM上的虚拟机

5 参与贡献

  1. Fork 本仓库
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request

特技

  1. 使用 Readme_XXX.md 来支持不同的语言,例如 Readme_en.md, Readme_zh.md
  2. Gitee 官方博客 blog.gitee.com
  3. 你可以 https://gitee.com/explore 这个地址来了解 Gitee 上的优秀开源项目
  4. GVP 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
  5. Gitee 官方提供的使用手册 https://gitee.com/help
  6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 https://gitee.com/gitee-stars/

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
harbor: 容器应用的开发和运行离不开可靠的镜像管理发布时间:2022-03-25
下一篇:
Linuxbrew-CN: 发布时间:2022-03-25
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap