前言
目前,部分客户提出在黑石物理机中实现自动化安装自定义的操作系统,为此设计并验证了基于PXE的自动化安装自定义OS,该方案主要分为两大类,一类为PXE Server与待安装操作系统的服务器位于同一个VPC下。第二类是PXE Server与待安装操作系统的服务器位于不同的VPC下。
在PXE Server与待安装操作系统的服务器不在同一个VPC时,可采用在物理机安装虚拟机的方法来实现自动化安装操作系统,可按照待安装的服务器所在的VPC来创建虚拟机。
一, 利用黑石云API创建虚拟机所处子网,并且指定子网的vlanId。
from src.QcloudApi.qcloudapi import QcloudApi
module = 'vpc'
action = 'CreateBmSubnet'
config = {
'Region': 'sh',
'secretId': '你账户的secretId',
'secretKey': '你账户的secretKey',
'method': 'get'
}
params = {
"vpcId": "sh_vpc_1026", #创建的子网所在的VPC的vpcId
"unVpcId": "vpc-p83g7nv7", #创建的子网所在的VPC的unVpcId
'subnetSet.0.subnetName': 'VM-test-pxe1', #创建的子网的名称
'subnetSet.0.cidrBlock': '10.1.5.0/24', #创建的子网IP
'vlanId': 2098 #创建的子网的VlanId
}
service = QcloudApi(module, config)
service.generateUrl(action, params)
print service.call(action, params)
注意:如果所创建的子网需要分配IP给虚拟机,则需要将VlanId设置在2000-2999之间。
二, 在创建好的子网中申请待分配给虚拟机使用的IP。
from src.QcloudApi.qcloudapi import QcloudApi
module = 'vpc'
action = 'ApplyIps'
config = {
'Region': 'sh',
'secretId': '你账户的secretId',
'secretKey': '你账户的secreteKey',
'method': 'get'
}
params = {
"vpcId": "sh_vpc_1026", #子网所在的VPC的ID
"subnetId": "sh_subnet_497", #申请的I平所在的子网ID
"count": 2, #申请IP个数,默认为1,取值范围1-20。
"ipClass": 1 #IP类型,0为物理机IP,1为虚拟机类型IP,2为托管类型IP。默认传1
}
service = QcloudApi(module, config)
service.generateUrl(action, params)
print service.call(action, params)
三, 将安装虚拟机的宿主机绑定到虚拟机所在的子网,即申请的子网。
from src.QcloudApi.qcloudapi import QcloudApi
module = 'vpc'
action = 'CreateBmInterface'
config = {
'Region': 'sh',
'secretId': '你账户的secretId',
'secretKey': '你账户的secreteKey',
'method': 'get'
}
params = {
"vpcId": "sh_vpc_1026", #子网所属的私有网络ID值.
"subnetId": 497, #要绑定的子网ID值.
"instanceIds.0": "cpm-7m316cuf" #物理机唯一ID.
}
service = QcloudApi(module, config)
service.generateUrl(action, params)
print service.call(action, params)
注意:如果宿主机安装了多个虚拟机并且多个虚拟机所处的子网不同,则需要将宿主机依次加入到各个子网中。
四, 在黑石物理机中建立虚拟网桥。
yum install bridge-utils -y
brctl addbr br0
ifconfig br0 up
五,在黑石物理机中安装必须的虚拟化工具
建议使用libvirt和virt工具来实现虚拟机的创建。
1. 安装所需要的工具。
yum install qemu-kvm libvirt virt-install
2. 验证安装结果,下图说明已经成功安装
3. 开启kvm服务,并且设置其开机自启动
systemctl start libvirtd
systemctl enable libvirtd
4. 在宿主机上安装VNC
yum install vnc vnc-server
六,在宿主机中安装虚拟机
1. 准备自定义的OS镜像文件。
2. 创建虚拟机文件存放的目录。
3. 使用virt-install创建虚拟机
virt-install --name=dhcp-serve1 --ram 2048 --vcpus 2 \
--disk path=/data/images/dhcp-server1.qcow2,size=10,format=qcow2,bus=virtio,sparse \
--cdrom /data/iso/CentOS-6.5-x86_64-bin-DVD1.iso \
--graphic vnc,listen=0.0.0.0,port=5938 \
--os-type=linux \
--virt-type=kvm \
--hvm \
--accelerate \
--network bridge=br0 \
--autostart \
--force
其中name表示的是所创建的虚拟机的名字,path表示虚拟机的位置,cdrom后需填系统镜像文件的路径,graphic指定采用何种可视化的工具。
4. 打开防火墙的5938端口
firewall-cmd --zone=public --add-port=5938/tcp --permanent
firewall-cmd --reload
5. 使用VNC连接该虚拟机,进行虚拟机操作系统的安装,直接到VNC官网上下载最新版的VNC Viewer即可。
6. 在VNC界面的操作下按照指引安装好操作系统。
7. 如果需要安装多台虚拟机,可以使用克隆的方法来生成多台虚拟机,这样就避免了重复安装操作系统。
virt-clone -o dhcp1 -n dhcp2 -f /data/images/dhcp2.img
七,在每个虚拟机中重新配置网卡使其处于所需的子网。
1.安装软件vconfig
2.配置eth0
nano /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
TYPE=Ethernet
BOOTPROTO=none
USERCTL=no
IPV6INIT=no
3.将vlan的配置等加入到开机自启动的rc.local
nano /etc/rc.local
/sbin/modprobe -a 8021q
/sbin/vconfig add eth0 2098
ifconfig eth0.2098 10.1.5.4 netmask 255.255.255.0
/sbin/route add default gw 10.1.5.1
4.重启虚拟机
八,在虚拟机中部署PXE+DHCP的环境
该环节的具体步骤请参照“基于PXE的自动化安装OS”用户指引。