利用fabric批量安装kvm虚拟机及其xp

公司一批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虚拟机都可以上网了。