批量装机环境
网络装机的优势
Ø 规模化:同时装配多台主机
Ø 自动化:装系统、配置各种服务
Ø 远程实现:不需要光盘、U盘等物理安装介质
PXE,Pre-boot execution Environment
Ø 预启动执行环境,在操作系统之前运行
Ø 可用于远程安装
工作模式
Ø PXE client集成在网卡的启动芯片中
Ø 当计算机引导时,从网卡芯片中把PXE client调入内存执行,获取PXE server配置、显示菜单,根据用户选择将远程引导程序下载到本机运行
PXE组件及过程分析
• 需要哪些服务?
Ø DHCP服务,分配IP地址、定位引导程序
Ø TFTP服务,提供引导程序下载
Ø FTP服务(或HTTP/NFS),提供yum安装源
• 客户机应具备的条件
Ø 网卡ROM必须支持PXE协议
Ø 主板支持网络启动
这三个功能可以集中到一个服务器,也可以分开到不同服务器
技术要点回顾:
基本概念:DHCP、TFTP、PXE;pxelinux.0、vmlinuz、initrd.img
PXE引导配置:/TFTP目录/pxelinux.cfg/default;背景图片、多系统支持
Kickstart自动应答:软件源指定、%POST安装后脚本;system-config-kickstart工具
#####################################################
PXE网络装机的整体思路
装机条件准备:1.准备RHEL7安装源(HTTP方式YUM库)
2.启动DHCP服务
PXE引导配置:3.启用TFTP服务,提供装机用的内核、初始化文件
4.提供PXE引导程序、配置启动菜单
提供软件安装源:为客户机提供软件源(可使用CentOS真机提供)
利用RHEL7光盘数据构建YUM源
通过httpd服务对外发布
DHCP概述及原理
• DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)
由 IETF(Internet 网络工程师任务小组)组织制定,用来简化主机地址分配管理
• 主要分配以下入网参数
– IP地址/子网掩码/广播地址
– 默认网关地址、DNS服务器地址
– PXE引导设置(TFTP服务器地址、引导文件名)
• DHCP地址分配的四次会话:DISCOVERY(客户机)请求 广播
--> OFFER (服务器)提供
--> REQUEST (客户机)选择
--> ACK (服务器)确认
• 服务端基本概念
– 租期:允许客户机租用IP地址的时间期限,单位为秒
– 作用域:分配给客户机的IP地址所在的网段
– 地址池:用来动态分配的IP地址的范围
系统服务dhcpd
DHCP服务端:软件包dhcp
DHCP客户端:dhclient
DHCP服务端配置文件:/etc/dhcp/dhcpd.conf
default-lease-time 默认租期;
max-lease-time 最大租期;
subnet 网络地址 netmask 子网掩码 {
range 起始IP 结束IP;
option routers 默认网关IP地址;
option domain-name-servers DNS1,DNS2;
next-server TFTP服务器的IP地址;
filename "网卡启动文件的名称";
}
语法检查:service dhcpd configtest
传输协议及端口:UDP 67(服务器)、UDP 68(客户端)
临时配置/测试:
格式:dhclient -d [网络接口] ,选项-d调试模式debug , ctrl+c退出测试
部署DHCP服务
PXE批量、全自动装配——安装系统、配置系统
一.安装素材(YUM源)的准备——PXE基础装机环境
1.服务端(仓库),提供软件包
1)快速构建httpd服务器 # yum -y install httpd //装包
2)准备挂载点 # mkdir /var/www/html/cos7dvd
# mkdir /var/www/html/rh7dvd
3)挂载镜像资源 # vim /etc/fstab
/ISO/rhel-server-7.2-x86_64-dvd.iso /var/www/html/rh7dvd iso9660 defaults 0 0
/ISO/CentOS-7-x86_64-Everything-1511.iso /var/www/html/cetos_dvd iso9660 loop,ro 0 0
# mount -a //挂载ISO镜像文件
# ls /var/www/html/rh7dvd/ //确认部署位置
4)启动Web服务 # systemctl restart httpd //启动服务
# systemctl enable httpd //设置开机自启
# firefox http://192.168.4.254/rh7dvd
# firefox http://192.168.4.254/cos7dvd
2.客户端(yum),使用软件包:
# rm -rf /etc/yum.repos.d/*.repo
# yum-config-manager --add http://192.168.4.254/cos7dvd
# vim /etc/yum.conf
gpgcheck=0
# yum repolist
二.配置DHCP服务端(分配IP地址相关参数,告知客户机TFTP服务器的地址、引导文件信息)
1.安装软件包dhcp # yum -y install dhcp
2.修改配置文件 /etc/dhcp/dhcpd.conf
# vim /etc/dhcp/dhcpd.conf
:r /usr/share/doc/dhcp*/dhcpd.conf.example
subnet 192.168.4.0 netmask 255.255.255.0 { //声明网段
range 192.168.4.10 192.168.4.200; //IP范围
next-server 192.168.4.7; //指定PXE服务器
filename "pxelinux.0"; //引导文件名
}
3.启动系统服务dhcpd,并设置开机自启 # systemctl restart dhcpd
# systemctl enable dhcpd
4.确认dhcpd服务状态 # netstat -antpu |grep dhcpd //确认结果,查看端口
# netstat -antpu |grep :67
如果有冲突服务dnsmasq: # pkill -9 dnsmasq
三.在客户端 pc207上测试
# nmcli connection modify eth0 ipv4.method auto
# nmcli connection up eth0
# ifconfig | head -2 # route -n # cat /etc/resolv.conf
1.使用dhclient命令测试,观察获取IP地址的过程
# dhclient -d eth0 //通过eth0进行广播
2.若因操作异常导致IP故障,可恢复客户机原有IP配置
# pkill -9 dhclient //杀死dhclient进程
# nmcli connection up eth0 //激活原配置###############################################################################
TFTP(Trivial File Transfer Protocol,简单的文件传输协议)
Ø UDP 69端口
Ø 主要用来传送小文件,不支持认证和复杂FTP操作
Ø 默认资源目录:/var/lib/tftpboot
Ø 服务端软件: tftp-server 客户端软件: tftp
Ø 利用netstat -anptu | grep :69 查看端口监听
配置PXE安装RHEL7系统时需要在TFTP资源目录提供哪些文件?
Ø 网卡启动文件:pxelinux.0
Ø 网卡启动文件的配置文件:pxelinux.cfg/default
Ø 引导安装的系统内核:vmlinuz
Ø 运行安装内核的初始化镜像:initrd.img
PXE引导配置
一.快速构建TFTP服务器
1)安装tftp-server(服务端) # yum -y install tftp-server
2)启动系统服务tftp,并设置开机自启: # systemctl restart tftp
# systemctl enable tftp
【TFTP资源目录】 # ls /var/lib/tftpboot //空目录
二.部署启动文件——用来启动客户机的引导文件(pxelinux.0、内核和初始镜像)
提供PXE启动程序——部署pxelinux.0启动程序
Ø 网卡启动程序pxelinux.0由软件包syslinux提供
Ø 网卡PXE启动完毕,主机引导权会交给此程序
1)在软件包syslinux提供的目录下找到pxelinux.0程序
# yum -y install syslinux
在软件包syslinux提供的目录下找到pxelinux.0程序
# rpm -ql syslinux | grep pxelinux.0 #查询安装清单
另一种查询方法:# yum provides */pxelinux.0 //查询仓库那个包提供的该文件
拷贝pxelinux.0程序到/var/lib/tftpboot/目录下,部署到TFTP目录,确认部署结果:
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
# ls /var/lib/tftpboot
2)拷贝引导装机的内核、初始镜像,部署到TFTP目录
提供装机内核及初始化文件——部署操作系统引导文件
Ø 可以从RHEL7光盘目录/images/pxeboot/下载
Ø 包括调整过的Linux内核、初始镜像文件
当文件较多时,可以在TFTP目录下创建子目录:# mkdir /var/lib/tftpboot/rhel7
通过光盘目录找到PXE版内核vmlinuz、初始镜像initrd.img,将其拷贝到上述子目录:
# cd /var/lib/tftpboot/rhel7/
# wget http://192.168.4.254/rh7dvd/isolinux/vmlinuz
# wget http://192.168.4.254/rh7dvd/isolinux/initrd.img //下载内核、初始化文件
确认部署结果:# ls -R /var/lib/tftpboot/
三.配置引导菜单(default、图形支持文件--模块+背景图)
拷贝模板文件——为pxelinux.0启动程序提供配置
Ø 可以从RHEL7光盘软件源下载
Ø 配置路径:/var/lib/tftpboot/pxelinux.cfg/default
PXE启动配置菜单文件的相关资料可参考RHEL7的光盘目录/isolinux/
/mnt/isolinux/vmlinuz #启动内核
/mnt/isolinux/initrd.img #启动时所需的驱动程序
/mnt/isolinux/vesamenu.c32 #支持图形的模块
/mnt/isolinux/splash.png #图形桌面背景
菜单配置文件isolinux.cfg(使用时改名为default)。
default配置文件调整——修改菜单文字、启动参数
Ø 为每个系统安装设好label及内容
Ø 确定Linux内核和初始镜像文件的路径正确
1)创建配置目录 # mkdir /var/lib/tftpboot/pxelinux.cfg
2)以光盘中的isolinux目录为模板,拷贝必要的文件
# cd /var/lib/tftpboot/
# wget http://192.168.4.254/rh7dvd/isolinux/isolinux.cfg -O pxelinux.cfg/default //建立菜单配置
# ls -l /var/lib/tftpboot/pxelinux.cfg/default
# chmod 644 /var/lib/tftpboot/pxelinux.cfg/default //修改权限,方便修改内容
# ls -l /var/lib/tftpboot/pxelinux.cfg/default
# wget http://192.168.4.254/rh7dvd/isolinux/vesamenu.c32 //提供图形支持
# wget http://192.168.4.254/rh7dvd/isolinux/splash.png //准备背景图片
# ls -R /var/lib/tftpboot/ //确认部署结果
3)调整启动参数# vim /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32 //默认交给图形模块处理
timeout 600 //选择限时为60秒(单位1/10秒)
.. ..
menu background splash.png //背景图片
第11行menu title PXE Installation Server //启动菜单标题信息
.. ..
label linux //菜单项标签
menu label ^Install Red Hat Enterprise Linux 7.2
第63行kernel rhel7/vmlinuz //内核的位置
第64行append initrd=rhel7/initrd.img inst.stage2=http://192.168.4.254/rh7dvd quiet //初始镜像、安装源位置
label rescue
menu label ^Rescue a Red Hat Enterprise Linux system
第95行kernel rhel7/vmlinuz
第96行append initrd=rhel7/initrd.img inst.stage2=http://192.168.4.254/rh7dvd rescue
第109行label local //从硬盘启动
第110行menu default //默认启动方式
第111行menu label Boot from ^local drive #从本地硬盘启动
四.检查TFTP服务是否可用——使用tftp命令访问测试
Ø 客户端工具tftp由同名软件包提供
Ø 用法:tftp 服务器地址 -c get 文件名
1)在pc207上安装tftp命令工具 # yum -y install tftp
2)在pc207上访问svr7上的TFTP服务端,下载文件测试
# tftp 192.168.4.7 -c get pxelinux.0
# ls -lh pxelinux.0 //检查下载结果
PXE客户机从开机到安装系统的过程(引导环节):
1)加载网卡芯片里的PXE client程序
2)由PXE Client向DHCP服务器获知IP地址、TFTP服务器地址、启动文件名
3)从TFTP服务器下载启动文件pxelinux.0
4)由pxelinux.0接管控制权
5)由pxelinux.0从TFTP服务器下载配置文件pxelinux.cfg/default
6)由pxelinux.0根据default配置,在客户机的显示一个启动菜单
7)根据用户选择(装rhel7),去下载内核vmlinuz,同时下载配套的initrd.img
8)在内存里加载initrd.img、vmlinuz
9)由内核vmlinuz接管控制权,主导安装过程
10)由内核vmlinuz根据inst.stage2=给定的地址下载rhel7的安装程序
!!!给定的地址/LiveOS/squashfs.img
11)把squashfs.img释放到内存里运行
12)由sqaushfs.img 提供安装向导程序(选语言、……)
13)进入正常的安装过程
initrd镜像的内容:
包括insmod模块管理工具,用来加载支持xfs、ext4的模块
案例:验证PXE网络装机
步骤一:新建一台虚拟机pxetest,注意将安装方式选择“网络引导(PXE)”。虚拟机的其他设置参考:内存1G、硬盘20G;网络类型要与PXE服务器相同,比如选用private1隔离网络。
注意:如果是生产环境中已经有系统的客户机,则需要调整BIOS设置,将网络引导作为第一启动设备。
步骤二:启动虚拟机pxetest,验证PXE网络安装过程
1)确认启动界面。 客户机通过PXE引导以后,可以获得服务端提供的配置界面。
2)选择第一个菜单项开始安装RHEL7操作系统,安装程序,根据提示选择中文后继续。
3)下一步需手动选择安装源
指定位于http://192.168.4.254/rh7dvd的软件仓库,软件选择、安装位置等设置根据需要指定,确认后继续。后续过程与正常的光盘安装类似,不再赘述。
顺利操作到这里说明PXE网络引导安装的目标已经实现了。
Kickstart自动应答
Kickstart技术:无人值守/自动应答
Ø 预先提供应答文件,定义好各种安装设置
Ø 免去交互过程,实现全自动化安装
Ø 添加%post脚本,可执行安装后的各种配置
应答文件从哪来?
方法一:找一台RHEL7客户机,获取应答文件模板:/root/anaconda-ks.cfg
方法二:安装system-config-kickstart工具
执行上述图形配置工具,创建新应答文件 (常用)
注意:1.所用客户机、YUM库的版本应该与待安装系统一致,避免兼容性故障;
2.修改后部署到资源服务器的/var/www/html/ks-rhel7.cfg
3.确保客户机可成功下载http://192.168.4.254/ks-rhel7.cfg
案例:PXE+kickstart自动装机
在PXE服务器上为RHEL7客户机准备ks应答文件,完成下列任务:
实现全自动的安装及配置 能够自动配好YUM仓库
然后在客户机上验证PXE+kickstart全自动装机过程:
再次将测试客户机从PXE启动并安装 完成后,重启客户机并验证结果
一.准备应答文件
找一台RHEL7系统的模板虚拟机,使用配置工具生成应答文件。
1)在模板机上安装system-config-kickstart软件包
# yum -y install system-config-kickstart
2)创建应答文件,调整模板机的yum仓库设置
清理掉无关的yum源,只保留为客户机安装RHEL7系统所必要的yum源,并且将源的ID修改为development。
# vim /etc/yum.repos.d/rh7dvd.repo
[development]
name = Red Hat Enterprise Linux 7
baseurl = http://192.168.4.254/rh7dvd
gpgcheck = 0
3)运行system-config-kickstart工具,创建应答文件
# system-config-kickstart
在支持图形程序的环境运行system-config-kickstart,即可打开该配置工具。
通过“文件”菜单打开/root/anaconda-ks.cfg文件,作为应答配置模板,这样可以节省很多时间。根据需要确认默认语言、时区,设置根口令、磁盘分区规划等基本信息。
在安装方法部分,选择“执行新安装”,并正确设置HTTP安装源的访问地址信息。
在引导装载程序选项,选择“安装新引导装载程序”。
在分区信息部分,选择清除主引导记录、删除所有现存分区、初始化磁盘标签,并手动添加/boot 200MB、SWAP分区 2000MB、/分区 所有剩余空间。
在网络配置部分,确认已添加第一块网卡,设为DHCP自动获取。
在防火墙配置部分,禁用SELinux、禁用防火墙。
在软件包选择部分,根据客户机的实际需要定制。比如若要使用图形桌面环境,建议将GNOME相关的包勾选上。
在安装后脚本部分,添加经验证的正确可执行语句,使客户机装好系统后能够自动配好YUM源。
确认上述调整后,通过“文件”菜单将其保存为/root/ks-rhel7.cfg。
4)应答文件微调整
确认应答文件:根据需要做必要的调整/修复、去掉冗余repo库(比如以repo --name开头的Server-HighAvailability、Server-ResilientStorage、autopart等行)
# vim /root/ks-rhel7.cfg
install //安装基本信息设置
……url --url="http://192.168.4.254/rh7dvd" //安装源设置
……#autopart --type=lvm //分区设置
……%post --interpreter=/bin/bash //安装后脚本设置
echo '[rhel7]
name = Red Hat Enterprise Linux 7.2
baseurl = http://192.168.4.254/rh7dvd
gpgcheck = 0' > /etc/yum.repos.d/rhel7.repo
%end
%packages //软件包设置
@^graphical-server-environment //安装软件包组
二.部署应答文件——PXE与kickstart结合使用
1)将应答文件部署在客户机可访问的位置
部署并确认文件(真机上):#scp [email protected]:/root/ks-rhel7.cfg /var/www/html/ # ls -lh /var/www/html/ks-rhel7.cfg //检查部署的文件
在客户端下载应答文件,确保可访问:
# wget http://192.168.4.254/ks-rhel7.cfg
# ls -lh ks-rhel7.cfg //检查下载的文件
2)在PXE服务器上修改default引导配置,调用应答文件
找到相应的label启动项,在append后添加ks=应答文件地址,去掉原有的inst.stage2参数设置:
# vim /var/lib/tftpboot/pxelinux.cfg/default
.. ..label linux
.. ..append initrd=rhel7/initrd.img ks=http://192.168.4.254/ks-rhel7.cfg
三.验证PXE+kickstart自动应答——PXE启动后自动安装系统,并配置yum源
1)新建一台虚拟机裸机,确认支持PXE网卡启动
新建一台虚拟机裸机,注意以下事项:将内存设为1G、硬盘设为20G;网络类型要与pxesvr服务器的相同,比如选择private1。
2)启动虚拟机裸机,验证PXE网络安装过程
正常PXE引导,选择第一个启动项回车确认即快速进入全自动安装,后续过程基本无需人工干预。
PXE客户机从开机到安装系统(自动应答)的过程:
1) 加载网卡芯片里的PXE client程序
2) 由PXE Client向DHCP服务器获知IP地址、TFTP服务器地址、启动文件名
3) 从TFTP服务器下载启动文件pxelinux.0
4) 由pxelinux.0接管控制权
5) 由pxelinux.0从TFTP服务器下载配置文件pxelinux.cfg/default
6) 由pxelinux.0根据default配置,在客户机的显示一个启动菜单
7) 根据用户选择(装rhel7),去下载内核vmlinuz,同时下载配套的initrd.img
8) 在内存里加载initrd.img、vmlinuz
9) 由内核vmlinuz接管控制权,主导安装过程
10) 由内核vmlinuz根据ks=给定的地址下载应答文件
11) 根据应答文件的设置完成自动化安装及配置客户机系统的过程
###############################################################################