公司一批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虚拟机都可以上网了。
时间: 2024-10-16 18:16:59