PXE 实现系统批量自动安装
- PXE
就是预启动执行环境,是一种引导启动的方式。这种协议一般由两部分构成,一部分是服务器端,一个是客户端。简单来说,我们通过这种方式可以自己创建一个“安装源”,在安装系统的时候只要能找到这个“源”便可以实现系统的安装。在实现无人值守的安装前,我们必须要搭建一些服务,来实现“安装源”的建立,例如 ftp、http、tftp、dhcp 等。当一台主机启动时,标准输入输出会将 PXE 客户端调入我们的内存中进行相关的操作,并提示相关的选项,在这里我们可以进行选择。PXE 的客户端通过网络下载(download)启动文件到本地运行。具体过程是,PXE 客户端通过网卡向局域网内发送 ip 请求,然后 DHCP 服务器会提供给给它一个 ip 地址和系统安装所需要的文件,接下使用接收到的文件进行系统安装。而安装的过程又需要其他服务器提供的资源,例如:yum 源,内核文件等,当主机拿到这些资源,便可以顺利的安装了。最终结果是:任意一台主机在选着网络启动时会获取 DHCP 服务器分发的 ip,通过获取到的 ip 地址与局域网内的 TFTP 服务器通信并获取启动文件,与 FTP 或者 HTTP 通信并获取 yum 源文件及内核文件等。之后开始自动安装,而这个过程不需要人在做任何操作。
- PXE安装优点
这种安装系统的方式可以不受光驱,光盘以及一些外部设备的限制,还可以做到无人值守,大大减轻了运维人员的工作负荷,像在一些主机数量庞大的机房进行批量安装,PXE 将是你不二的选择。
具体操作如下:
1. 安装服务
由于我们需要 HTTP、TFTP、DHCP 服务来提供相应的服务,所以我们必须要在系统中安装,相应的服务。这里需要注意,如果你的系统时最小化安装,那么建议你先安装一些包组,GCC等。如果安装过程中出现包依赖问题,依次安装相应的包即可。
执行如下
[root@client ~]# yum install dhcp tftp-server.x86_64 httpd syslinux -y #安装相应的服务包
httpd # 共享安装资源
dhcp # 分配ip以及让客户主机获取pxelinux.0文件
pxelinux.0 # 预安装环境头文件,用来指定读取后续文件的程序
tftp-server # 提供tftp协议,令客户主机可以读取到预安装环境
syslinux # 提供pxelinux.0文件
[root@client ~]# yum install xinetd -y # 安装超级守护进程 xinetd
[root@client ~]# systemctl start dhcpd # 启动 dhcpd 服务
[root@client ~]# systemctl enable dhcpd # 设置 dhcpd 开机启动
[root@client ~]# systemctl start httpd # 启动 httpd 服务
[root@client ~]# systemctl enable httpd
[root@client ~]# chkconfig --list # 如果 tftp: off,请修改配置文件
[root@client ~]# vim /etc/xinetd.d/tftp
service tftp
{
...
disable = yes # 修改这一项为"disable = no"
...
}
[root@client ~]# systemctl restart xinetd # 修改之后,一定要重启xinetd服务
执行如下:
修改配置文件
查看
2. 配置DHCP服务
DHCP服务是保证我们能够自动化批量安装的前提,主要是配置子网范围,用于ip地址分配。
[root@client ~]# rpm -ql dhcp # 查询dhcp相关的文件
...前面省略
/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example
/usr/share/doc/dhcp-4.2.5/dhcpd6.conf.example
...后面省略
[root@client ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
# 复制模板配置文件
[root@client ~]# vim /etc/dhcp/dhcpd.conf # 编辑配置文件
...前面省略...
subnet 172.25.151.0 netmask 255.255.255.0{
# 这里写的ip地址为子网的 地址,故为192.168.14.0
range 172.25.151.30 172.25.151.40;
# 子网的范围,之后主机请求获取的ip地址就是这其中的一个
next-server 172.25.151.20
# 指明tftp服务器的地址
filename "pxelinux.0";
# 指明PXE文件位置,这个在申请ip的时候会发送给安装主机
option routers 172.25.151.20;
}
...后面省略...
[root@client ~]# systemctl restart dhcpd.service # 重启服务
注意:如果你设置的子网有问题,那么你将不能重启dhcp服务,请检查你配置的子网是否正确。
dhcp服务器的地址必须固定,不能是自动获取的ip。
执行入下:
编辑配置文件
3.设定共享文件
3.1 制作安装源
[root@client ~]# mkdir /var/www/html/rhel7.0
# 创建挂载点
[root@client ~]# mkdir /iso
# 创建镜像源放置点
[root@client ~]# mv /root/Desktop/rhel-server-7.0-x86_64-dvd.iso /iso/
# 将镜像源放入
[root@client ~]# mount /iso/rhel-server-7.0-x86_64-dvd.iso /var/www/html/rhel7.0/
# 进行挂载镜像
[root@client ~]# vim /etc/rc.d/rc.local
# 编辑配置文件进行开机自动挂载
内容如下:
mount /iso/rhel-server-7.0-x86_64-dvd.iso /var/www/html/rhel7.0
[root@client ~]# chmod +x /etc/rc.d/rc.local
# 为该文件添加执行权限
执行如下:
3.2 准备内核文件菜单文件
[root@client ~]# cp /var/www/html/rhel7.0/isolinux/* /var/lib/tftpboot/
# 复制内核,虚拟根文件
[root@client ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
# pxelinux文件来自syslinux包,直接复制即可
[root@client ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@client ~]# cp /var/lib/tftpboot/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
# 复制并改名
# 编辑文件
systemctl restart xinetd
3.3 设定自动化部署
[root@client ~]# yum install system-config-kickstart -y
[root@client ~]# system-config-kickstart
执行,进行配置,将文件保存为 /var/www/html/rhel7.0.cfg
[root@client ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
在 61 行左右添加
label autoinstall # 选项标签
menu label ^Autoinstall RHEL7.0 # 标题
kernel vmlinuz # 启动的内核文件
append initrd=initrd.img # 初始化镜像
repo=http://172.25.254.100/rhel7.0 # 安装资源
ks=http://172.25.254.100/rhel7.0.cfg # 自动安装脚本
执行如下:
system-config-kickstart 具体配置见Linux菜鸟成长日记 (Linux通过脚本文件自动创建虚拟机)
保存为
编辑配置文件
4. 调试并安装
以建立虚拟机为例
点击建立
pxe 方式进行建立,然后进行配置
可看到从自动获取 IP
进入刚才设定的菜单,进行自动安装