PXE 自动部署

1. PXE简介

PXE(Preboot Execute Environment ,预启动执行环境)

工作与 C/S模式当中。

PS: C/S架构有: samba、ftp、dhcp、mysql、fastcgi

Client/Server 的网络模式,支持工作站通过网络从远端服务器下载映像,并支持通过网络启动操作系统。

2. PXE 工作流程

1) PXE Client 从自己的网卡启动,向本网络中的DHCP服务器索取IP地址

2) DHCP 服务器返回分配非客户机的 ip 以及 PXE文件的放置位置(该文件一般放在TFTP服务器中)

3) PXE Client 向本网络中的 TFTP服务器索取 pxelinux.0文件

4) PXE Client 取得pxelinux.0文件后执行该文件

5) 根据pxelinux.0 文件的执行结果,通过TFTP服务器加载内核和文件系统

6) 进入安装画面,此时可以通过选择HTTP、FTP‘NFS方式进行安装

涉及服务:

ftp: 用于提供安装系统时用的rom包的下载

DHCP : 为客户端分配IP地址

TFTP: 负责小文件存储于分发

3. KS(KickStart)

将安装步骤的交互过程(设置语言、时区、安装的一些配置) 写入至 ks.cfg(自动应答文件) 文件中

KS 的使用主要是为了实现无人值守

4. 部署PXE+KS

实现无人值守安装

1) 安装涉及的各个服务

[root@tianci yum.repos.d]# yum -y install vsftpd dhcp xinetd tftp-server syslinux 

# 安装 FTP服务、DHCP、xinetd、TFTP服务端、syslinux 
# xinetd(Extended Internet、Daemon): xinetd是一个新一代的网络守护进程服务程序,又称为 Internet服务器,用于管理服务 
# syslinux : 是一个功能强大的引导加载程序,兼职各种介质,用于简化首次安装linux的时间,也相当于一个启动盘

2)创建 ftp 共享目录,且将镜像挂载或者绑定至 ftp 共享目录

[root@tianci ~]# mkdir /var/ftp/Centos 
	# 创建ftp共享点 
[root@tianci ~]# mount --bind /media/ /var/ftp/Centos/ 
	# 将Centos的镜像挂载或者绑定至ftp的共享点中用于共享rpm包 
	# mount --bind 是将两个目录中的内容进行同步(实现绑定) 
[root@tianci ~]# ls /var/ftp/Centos/ 
CentOS_BuildTag  EFI  EULA  GPL  images  isolinux  LiveOS   Packages  repodata  RPM-GPG-KEY-CentOS-7  RPM-GPG-KEY-CentOS-Testing-7   TRANS.TBL

3) 配置TFTP服务

  • 创建 TFTP 的共享文件夹
[root@tianci ~]# mkdir -p /tftpboot/pxelinux.cfg

  • 将 镜像中的 isolinux(引导文件) 复制至 TFTP服务的目录中
[root@tianci ~]# cp /media/isolinux/* /tftpboot/
  • 将syslinux引导文件导入至 tftp服务的共享目录中
[root@tianci ~]# cp /usr/share/syslinux/pxelinux.0 /tftpboot/
  • 将 isolinux 引导文件 移动至 /tftpboot/pxelinux.cfg/default
[root@tianci ~]# cd /tftpboot/

[root@tianci tftpboot]# mv isolinux.cfg pxelinux.cfg/default
  • 修改配置文件
[root@tianci tftpboot]# vim pxelinux.cfg/default 



​    timeout 10          ## 超时时间 10 表示一秒

​    # label linux

​    # label check         ## 将两个标签中删除,编译以下标签

​    label linux-pxe       

​        menu label ^ Install Centos Linux 7 via PXE

​        # 定义菜单的标签,

​        menu default

​        # 将该标签设为默认,否则需要手动确定

​        kernel vmlinuz

​        # 定义内核文件,位于 /tftpboot/vmlinuz

​        append initrd=initrd.img ks=ftp://192.168.116.10/ks.cfg quiet

​        # initrd=initd.img  加载临时系统根文件

​        # 指定ftp的IP地址,用于获取 rpm包

  • 上述操作创建了 TFTP的共享目录,需要修改配置文件。
  [root@tianci tftpboot]# vim /etc/xinetd.d/tftp 

​        server_args             = -s /tftpboot

​        \# 修改tftp服务器默认目录为 /tftpboot

​        disable                 = no

​        \# disable 为禁止服务, 将 yes 改为 no 表示不禁用,启动TFTP服务

4) 配置DHCP服务

配置DHCP,用于给客户端分发IP地址

#修改DHCP配置文件,但是需要复制生成配置文件
[root@tianci ~]# vim /etc/dhcp/dhcpd.conf    
[root@tianci ~]# cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf 
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y
[root@tianci ~]# vim /etc/dhcp/dhcpd.conf 
default-lease-time 666600;  
max-lease-time 6667200;
# 默认租约时间 安装时间较长,所以将租约时间延长
# 最大租约时间
subnet 192.168.116.0 netmask 255.255.255.0 {
        option routers 192.168.116.2;
        option domain-name-servers 192.168.116.2;
        range 192.168.116.100 192.168.116.150;
        next-server 192.168.116.10;
        filename "pxelinux.0";
}
# 声明网段地址 以及子网掩码
#    网关 192.168.116.2
#    分配的DNS : 192.168.116.2
#    分配ip的范围
#   tftp的服务器地址
#   tftp服务器的名字

5) 安装 KickStart 实现无人值守

[root@tianci ~]# yum -y install system-config-kickstart [root@tianci ~]# system-config-kickstart 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
添加磁盘分区 / 并分配全部空间

在这里插入图片描述

其它选项保持默认即可

将文件保存至 /root 目录下 为 ks.cfg

ks.cfg 文件记录刚刚配置信息,然而并没有 rpm 包的信息,需要从 anconda-ks.cfg文件默认获取 %Packges ~~~ %end(第一个end) 复制至 ks.cfg 文件的末尾

并在 ks.cfg 文件末尾 添加 以下两行

[root@tianci ~]# vim /root/ks.cfg

user --name=tianci --password=1234.com		# 自动创建用户(必须的)

eula --agreed			# 表示自动勾选同意协议

[root@tianci ~]# cp -a ks.cfg /var/ftp/		# 放入ftp服务的根目录,否则会找不到

[root@tianci ~]# chmod +r /var/ftp/ks.cfg  	# 并且赋予读取权限

开启各种服务,如果没有报错则没有问题

[root@tianci ~]# systemctl start dhcpd

[root@tianci ~]# systemctl start vsftpd

[root@tianci ~]# systemctl start xinetd

关闭防火墙与沙盒

[root@tianci ~]# systemctl stop firewalld

[root@tianci ~]# setenforce 0
  1. 验证

注意: 客户端的网卡要与服务端的一致

art dhcpd

[root@tianci ~]# systemctl start vsftpd

[root@tianci ~]# systemctl start xinetd

关闭防火墙与沙盒

[root@tianci ~]# systemctl stop firewalld

[root@tianci ~]# setenforce 0




4. **验证**

注意: 客户端的网卡要与服务端的一致

服务端要关闭防火墙、沙盒
发布了15 篇原创文章 · 获赞 2 · 访问量 665

猜你喜欢

转载自blog.csdn.net/RunzIyy/article/details/104656099