利用fabric批量安裝kvm虛擬機及其xp
阿新 • • 發佈:2017-05-08
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