Centos 7 kvm虚拟化 批量装机脚本
Centos7 kvm虚拟化 批量装机脚本实验环境:
软件VMware workstations
系统 CentOS Linux release 7.1.1503 (Core)
建议安装图形,好使用Xmanager Enterprise 4出图,好用vnc登录安装模板虚拟机
1.环境准备:
systemctldisable firewalld;systemctlstop firewalld #关闭防火墙
sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config #关闭selinux
yumgroupinstall "Virtualization Host" -y #虚拟化组包
yum install qemu-kvm libvirt virt-install bridge-utils -y#桥接网卡
yum install tigervnc* -y #用来图形界面连接虚拟机
# lsmod|grep kvm
kvm_intel 14808112
kvm 4611261 kvm_intel#查看kvm模块是否打开
启动,服务
systemctl start libvirtd;systemctl enable libvirtd
重启机器init6
2.母鸡网卡桥接
# cat /etc/sysconfig/network-scripts/ifcfg-br0
TYPE=Bridge
BOOTPROTO=dhcp #改成static 下面可以根据自己需求写成静态ip
DEVICE=br0
DNS1=222.88.88.88
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
ONBOOT=yes
# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736
TYPE=Ethernet
BRIDGE=br0
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME="eno16777736"#根据你网卡的名字修改
ONBOOT=yes
3.创建虚拟机及存储位置,并安装模板虚拟机
修改libvirt 配置文件 /etc/libvirt/qemu.conf vnc 监听,所有者,所属组,不然安装虚拟机,会有报错,提示没权限
# grep -E-v "^#|^$"/etc/libvirt/qemu.conf
vnc_listen = "0.0.0.0"
user = "root"
group = "root"
dynamic_ownership = 0
mkdir/data/
root家目录传一个centos6.5 的镜像我们用来安装一个模板
virt-install-ncentos6.5-r 1024 -c /root/CentOS-6.5-x86_64-minimal.iso--disk path=/data/centos6.5.img,device=disk,bus=virtio,size=30,format=qcow2--vnc--vncport=5901--vnclisten=0.0.0.0 -v
会弹出,安装界面
安装完毕,配置好ip,也可以不用配置,我们通过脚本,复制一个网卡配置文件到虚拟机磁盘
rm -rf /etc/udev/rules.d/70-persistent-net.rules #重要: 删除udev 规则
关机,此虚拟机作为我们的模板
4.脚本环境准备
yum install libguestfs-tools-y #我们需要用到这个工具,用脚本调用命令去操作虚拟机磁盘里面的文件
cp /etc/libvirt/qemu/centos6.5-node1.xml /data/ #此xml 文件作为模板文件,安装过虚拟机会生成这样的xml 文件
/data/centos6.5.img #此硬盘作为模板硬盘文件
网卡模板文件
# cat /data/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.11.174
NETMASK=255.255.255.0
GATEWAY=192.168.11.1
DNS1=114.114.114.114
主机名模板文件
# cat /data/network
NETWORKING=yes
HOSTNAME=node1.example.com
我们需要用脚本去处理这两个文件,来满足我们的需求
5.脚本内容:
点击(此处)折叠或打开
[*]#!/bin/bash
[*]echo -n "请输入要虚拟机的台数例如:node1.example.com 只需输入数字"1" 即可:"
[*]read y
[*]for x in $(seq $y)
[*]do
[*]#################################create disk image ########
[*]qemu-img convert -c -O qcow2 /data/centos6.5.img /data/node$x.example.com.qcow2
[*]cp /data/centos6.5-node1.xml /etc/libvirt/qemu/node$x.example.com.xml
[*]
[*]sed -i "s/centos6.5-node1/node$x.example.com/g" /etc/libvirt/qemu/node$x.example.com.xml
[*]
[*]sed -i "s/file\=.*/file\=\'\/data\/node$x\.example\.com\.qcow2\'\/\>/g" /etc/libvirt/qemu/node$x.example.com.xml
[*]###########################vncport#######################
[*]sed -i "s/5901/590$x/g" /etc/libvirt/qemu/node$x.example.com.xml
[*]#################uuid######################################
[*]UUID=`uuidgen`
[*]sed -i "s/\.*/uuid\>$UUID\<\/uuid\>/g" /etc/libvirt/qemu/node$x.example.com.xml
[*]#####################mac###################################
[*]MAC=`echo -n 52:12:00; dd bs=1 count=3 if=/dev/random 2>/dev/null |hexdump -v -e '/1 ":%02X"'`
[*]sed -i "s/<mac address\=".*/\/g" ="" etc="" libvirt="" qemu="" node$x.example.com.xml<mac=""
[*]##################define virsh ###########################
[*]
[*]virsh define /etc/libvirt/qemu/node$x.example.com.xml >/root/vminstall.log 2>&1
[*]
[*]##########################change address| change hostname #########
[*]sed -i "s/IPADDR=.*/IPADDR=192.168.11.17$x/g" /data/ifcfg-eth0
[*]sed -i "s/HOSTNAME=.*/HOSTNAME=node$x.example.com/g" /data/network
[*]###############must : yum install libguestfs-tools ################
[*]virt-copy-in -d node$x.example.com /data/network /etc/sysconfig/
[*]virt-copy-in -d node$x.example.com /data/ifcfg-eth0 /etc/sysconfig/network-scripts/
[*]######################################################################
[*]
[*]virsh start node$x.example.com >/root/vminstall.log 2>&1
[*]virsh list |grep node$x.example.com
[*]echo "node$x.example.com IP:192.168.11.17$x Password:centos"
[*]done
6.脚本测试
网络连通性测试
# fori in {1..4}; do ping -c 1 192.168.11.17$i ; done
在母鸡通过vnc 连接虚拟机
vncviewer192.168.11.8:5901
页:
[1]