KVM 虛擬機自動部署腳本:kvm_vm_setup
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/