1. 程式人生 > >利用fabric批量安裝kvm虛擬機及其xp

利用fabric批量安裝kvm虛擬機及其xp

define zha win Coding -c all wget war qcow2

公司一批PC機需要安裝多個虛擬機跑任務,搞來搞去決定用centos7安裝KVM來跑。於是先折騰了一下午,利用早先搭建好的cobbler給PC機安裝OS。然後fabric批量部署。

 

環境:centos7  gnom桌面   關閉了SELINUX,FIREWALLD.

工具:fabric

虛擬機:nat模式  安裝xp

技術有限,所以在cobbler裝完OS後又手動給PC一個個固定了IP。

安裝fabric過程不再贅述

vim fabfile.py #-*- encoding:utf-8 -*- from fabric.api import * env.user = "root" env.password = "root" env.hosts = [‘192.168.0.62‘,‘192.168.0.63‘,‘192.168.0.64‘,‘192.168.0.65‘,‘192.168.0.66‘,‘192.168.0.67‘,‘192.168.0.68‘,‘192.168.0.69‘,‘192.168.0.70‘,‘192.168.0.71‘,‘192.168.0.72‘,‘192.168.0.73‘,‘192.168.0.74‘,‘192.168.0.75‘,‘192.168.0.76‘,‘192.168.0.77‘,‘192.168.0.78‘,‘192.168.0.79‘,‘192.168.0.202‘,‘192.168.0.203‘,‘192.168.0.204‘,‘192.168.0.205‘,‘192.168.0.206‘,‘192.168.0.207‘,‘192.168.0.208‘,‘192.168.0.209‘,‘192.168.0.211‘,‘192.168.0.212‘] #更換yum源,添加epel源 def change_yum(): run(‘mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup‘) run(‘wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo‘) run(‘yum -y install epel-release‘) #yum安裝kvm def install_kvm(): run(‘yum -y install qemu-kvm qemu-img virt-manager libvirt libvirt-python libvirt-client virt-install virt-viewer bridge-utils‘)
#開機自啟動
def enable_kvm():
  run(‘systemctl start libvirtd‘)
  run(‘systemctl enabled libvirtd‘)
  run(‘systemctl enabled libvirt-guests.service‘)

保持文件退出。

使用fab -l查看當前可用方法。

使用fab change_yum等方法批量部署。

如此KVM便安裝完成。

進入圖形界面。傻瓜式安裝xp虛擬機。將XP中所需環境部署好後,克隆及分發虛擬機。

   #使用命令克隆虛擬機,預先關閉虛擬機。

 virt-clone -o winxp1 -n winxp2 -f /home/xp_spool/winxp2.qcow2

  #-o 指定要克隆的虛擬機,-n 指定克隆後生成的虛擬機名, -f 指定虛擬機磁盤鏡像存放位置及名稱。

 

當完成克隆後,會在/etc/libvirt/qemu目錄下生成對應的xml配置文件,裏面記載了虛擬機的各種配置。

此時,本機克隆完成了。

 

異地克隆虛擬機需要借助fab

vim fabfile.py  

#將xml文件分發到各實體機中。

def put_xml():
  put(local_path=‘/etc/libvirt/qemu/winxp[1-5].xml‘,remote_path=‘/etc/libvirt/qemu/‘)

#將本地克隆的虛擬機副本鏡像分發到各實體機中。註意路徑要與xml中的配置的一樣。

def put_disk():
put(local_path=‘/home/xp_spool/winxp[1-5].qcow2‘,remote_path=‘/home/xp_spool/‘)

#應用xml配置啟用虛擬機。

def define_xml():
  for i in range(1,6):
    run(‘virsh define /etc/libvirt/qemu/winxp%s.xml‘ % i)

#創建快照。

def creat_kuaizhao():
  for i in range(1,6):
    run(‘virsh snapshot-create winxp%i‘% i)

 

奇怪現象:由於采用的nat模式,所以centos中的路由轉發功能應該打開,但是安裝kvm後大部分主機都自動開啟了,只有少部分沒有。

於是無腦

def set_ip_forward():

  run(‘echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf‘)

#使路由生效

  run(‘sysctl -p ‘)

 

於是所有xp虛擬機都可以上網了。

  



利用fabric批量安裝kvm虛擬機及其xp