/kvm_vm_setup

kvm_vm_setup

Primary LanguagePython

##kvm_vm_setup##

KVM 虚拟机自动部署脚本,可以自动化的完成kvm虚拟机的部署,包括ip注入。

##主要功能如下:##

1 全自动的完成虚拟机生成、主机名、ip地址配置;

2 支持Windows系统、RHEL6/RHEL7、CentOS6/CentOS7、RHEL6/RHEL7衍生系统、Ubuntu系统的部署,其它系统未做测试;

##使用前提条件:##

1 Windows、Linux系统按照帮助文档要求制作镜像:

Windows 镜像制作请参考Windows_img_make,Linux镜像制作请参考Linux_img_make;

2 宿主机上,镜像、虚拟机的存储路径为/datapool;

3 如果要使用lvm,vg的名字必须是datavg;

4 宿主机系统只支持RHEL6/RHEL7、CentOS6/CentOS7、RHEL6/RHEL7衍生系统,本脚本通过调用Libvirt配置虚拟机,通过guestfish编辑虚拟机镜像,需要安装虚拟化组件、Libvirt组件、guestfish组件:

首先需要运行firsh.sh脚本,会自动判断操作系统,并安装组件,升级操作系统。

安装完成后重启系统,并启动libvirt服务。

service libvirtd restart

##使用方法:##

1 下载脚本源代码

git clone https://github.com/xiaoli110/kvm_vm_setup

2 编辑vm.csv文件,格式如下:

#vmflag,template,name,disk1_size,disk2_size,mem_size,cpu_num,nic_type,nic1_bridge,nic2_bridge,vnc_port,outip,outmask,outgw,inip,inmask,ingw

#vm template name must be ''win2003ent32chs' 'win2003ent64chs' 'win2008ent64chs' 'centos56x64' 'ubuntu1204X64'

#keyword vmLvm means create lvm for vm,default vg is datavg

#keyword vmCpOnly means not resize images , just cp imaiges,default vg is datavg

#kerword url: means download vm images path,like

#url:http://172.16.1.100/

ftp:ftp://ftpuser1:password@ftp.myimages.com:10021/

ftp:ftp://ftpuser2:password@ftp.myimages2.com:10021/

此处如果指定url,会到url上去拉去虚拟机镜像,支持ftp方式,拉取方式为url加镜像名字,镜像名字为下面虚拟机配置文件中的镜像名字。

可以指定两个url,脚本会自动比较多个url的速度,需要在url里面放置一个200MB大小的名为“ratetest”的文件。

如果没有指定url,脚本会认为/datapool已经有指定的镜像,如果/datapool下面也没有镜像,就会报错退出。

vm,win2003ent32chs,win2003-138,20G,20G,2048,2,e1000,br1,br1,5921,10.10.10.21,255.255.255.0,10.10.10.1,192.168.122.138,255.255.255.0,none

vmLvm,win2003ent32chs,virt1-lab-222,10G,10G,2048,2,e1000,br2,br2,59222,10.0.0.222,255.0.0.0,10.0.0.1,172.16.2.222,255.255.255.0,none

vmCpOnly,centos6564.qcow2,centos65-8,30G,20G,2048,2,virtio,br1,br1,59008,10.10.10.8,255.255.255.0,10.10.10.1,172.16.2.8,255.255.255.0,none

虚拟机生成配置文件信息如下:

第一个关键字意义如下:

vm 使用qcow2方式,并通过guestfish进行文件系统的扩展;

vmLvm 使用lvm方式;

vmCpOnly 使用qcow2方式,直接复制镜像。

第二个关键字为镜像名字,建议名字包含操作系统信息。

后面的配置关机字依次为虚拟机主机名,第一块磁盘大小,第二块磁盘大小,CPU、内存配置等信息。

注意:

1 如果使用vm关键字进行磁盘扩展,第一块磁盘必须大于镜像;

2 每个关键字必须有内容,第二块磁盘必须有,最小为1G;

3 ip地址合法性本脚本不作检查;

4 CentOS7的虚拟机只支持在CentOS7的宿主机上进行配置。

###运行脚本###

使用命令

python virtauto.py 就可以自动生成虚拟机。

virtauto.py 帮助信息如下:

kvm vm setup script

-h, --help print this

--vg,assige vg name,such as --vg=datavg,vg=vmVG

default vg name is 'datavg' if not assige

--config,assige config file name ,such as --config=vm.csv

config file must in same directory and must be csv

default config file name is 'vm.csv' if not assige

--url,give path to download vm images,such as --url=ftp://user1:pass@172.16.1.100/

##一个bug的临时修改方法:##

目前脚本cpu模式使用的是host-passthrough,脚本跑完,cpu这里的xml文件是:

<cpu match='exact'>

<model>host-passthrough</modle>

</cpu> 需要手动将这里修改为:

<cpu mode='host-passthrough'/>

否则虚拟机不能启动,这个应该是virt-install命令行的一个bug,后面准备增加一个功能,判断并替换。