Linux——PXE整体流程

1.自己安装一个CentOS 8的服务器

1)手动安装

   虚拟硬件配置:2核CPU,4G内存,100G硬盘

                 2个网卡(一个通外网,一个内部使用)

   软件安装:Server GUI

   磁盘分区:使用逻辑卷,但是/boot使用普通分区

  /boot 1G

  swap 4G

  / 剩余空间

            其他分区,暂时不需要

2)网络配置

   第一个网卡ens160

   使用vmnet8(NAT),vmware关闭自己的DHCP

   使用IP段:172.25.254.0/24(可以通过NAT连外网下载东西)

   第二个网卡ensXXX

   桥接到vmnet2(连接到Windows主机的环回网卡)

   部署PXE使用,内部连接

   使用IP段:192.168.1.0/24(192.168.1.254)

3)软件源

   不使用系统自带的yum源,原有yum源备份到别的目录

   3.1)使用安装光盘的资源

        本地yum(自己安装软件包,给PXE客户机做yum源)

   3.2)使用网络yum源,比如elrepo

        服务器自己从外网下载额外软件

2.提前准备两个客户机(新的服务器,等待PXE装系统)

1)先不开机,不装系统

2)配置:2核,4G,50G盘(nvme硬盘)

         第一个网卡ens160

         连接到vmnet2(和服务器的第二个内部网卡桥接到一起)

         网络连接,可以自己自定义,保证内网的连接都通

         IP网段:192.168.1.0/24(先通过DHCP获得网络配置)

         可以添加第二个网卡比如ensXXX

         比如,也可以桥接到vmnet8(NAT)

         需要先让第一个网卡,生成MAC地址,并记录,后续给DHCP用

3.部署PXE服务器

0)在之前的服务器上,192.168.1.254

1)安装nginx

   软件包:nginx

   配置文件:/etc/nginx/nginx.conf

   可以不做任何修改,直接运行,但也可以添加一些配置

   主要是确定,http的工作目录:/usr/share/nginx/html

  可以在location添加访问控制,只允许内网客户机访问自己的http

   启动启用服务:nginx

   1.1)我的实验里,新建了一个/usr/share/nginx/html/centos84目录

        每个人自己的目录,自定义就好

   1.2)安装好nginx后,需要先把自己的yum的目录

        移动到/usr/share/nginx/html/centos84目录下,方便使用

        自己的本地repo文件,修改好路径

   1.3)nginx的工作目录,就是将来kickstart的内容获取的目录

2)部署DHCP

   软件包:dhcpd

   配置文件:/etc/dhcp/dhcpd.conf

   2.1)全局配置

保证租期别太短,上面例子里有点少……

   2.2)地址池配置

给内网的客户机,提供DHCP

   网段、DNS、广播地址……

   重要的:range

           option routers(可以指定到254也就是服务器自己)

           next-server(一定是服务器自己254,服务器的TFTP)

           filename(要从TFTP获得的内容)

   2.3)特定主机配置

比如,两个客户机,就有两段配置

   对应不同的MAC地址,分配特定IP、特定主机名

   两个客户机:101 -> servera,102 -> serverb

   启动启用DHCP服务:dhcpd

3)安装syslinux软件包,获得pxelinux的相关文件

4)部署TFTP服务

   软件包:tftp-server、xinetd

   4.1)配置文件:/etc/xinetd.d/tftp

这个配置文件,可以从xinetd.d目录,复制其他文件,再修改

   启动启用服务:tftp、xinetd

                 tftp可能看不到启动状态,不是独立服务

   4.2)TFTP工作目录要包含的必要文件

 这些文件,从系统安装镜像的目录里,复制

   还有从syslinux软件包生成目录复制……

   4.3)关于pxelinux.cfg目录和里面的文件

 default文件:

客户机将来PXE启动时候没有读秒的倒计时

使用配置文件中linux这一段的配置

指定ks文件,通过http获得

*上面的内容参照PXE文档就行*

接下来是kickstart脚本和里面额外的shell脚本

4.要在http的目录里放置所有相关文件

  包括:ks.cfg、其他脚本、其他客户机需要的文件(配置文件)

centos84,是服务器的本地yum目录,也是PXE的yum目录

   hosts,要传递给客户机的/etc/hosts

   indexa和indexb两个html,将来两个客户机要启动的web主页

   instsoft.sh,客户机将来个性化安装软件,使用的脚本

   inter.repo,传递给客户机的yum配置文件/etc/yum.repos.d/

   ipcfg.sh,客户机将来静态配置主机和网络信息,使用的脚本

   ks.cfg,kickstart给客户机安装系统,使用的主要脚本

   sshpubkey,服务器自己提前做好的ssh的公钥,将来传给客户机

              用于将来服务器免密SSH登录客户机

   weba和webb两个conf文件,两台客户机分别启用web服务使用的配置文件

   4.1)centos84目录

  4.2)hosts文件

主要是两个客户机的本地DNS解析

 4.3)indexa和indexb

   就是最简单的web主页内容

   4.4)instsoft.sh

用于客户机自己判断,安装软件包

servera安装httpd,serverb安装nginx

   4.5)inter.repo

yum源,通过http指到了服务器

   4.6)ipcfg.sh,分段看

客户机配置yum源

获取hosts文件

设置selinux和防火墙

让客户机,指定服务器,作为时间同步的源

将来客户机和服务器时间是同步的

先临时设定一堆环境变量,为了获取客户机自己的IP地址、主机名等信息

这些信息,变为静态配置

从服务器,获得ssh的公钥,放到客户机指定的目录,指定的文件名

   4.7)sshpubkey

服务器把自己的ssh的公钥复制过去(id_rsa.pub)

这个东西怎么生成

#ssh-keygen命令生成

   4.8)weba.conf

   其实是个httpd的配置文件(apache的配置文件)

   将来复制到客户端,作为httpd服务的配置文件

   主要指定一个主机名,其他暂时不需要修改

   4.9)webb.conf

   其实是一个nginx配置文件

   将来复制到客户机,作为nginx的配置文件

   也是主要指定server_name

   4.10)ks.cfg脚本

安装过程中,使用图形化界面(点鼠标的安装界面)

给客户机指定一个repo(其实可选)

%packages,指定安装不带图形的Server,也可以指定别的软件包

指定键盘,语言(额外有中文)

网卡的配置,指定了客户机ens160网卡,通过DHCP获得参数

url指定了系统安装过程中,使用的介质来源(光盘或者网络传来的光盘信息)

首次启动的代理(欢迎界面和流程),不启用,或者disable

这一段,磁盘分区的配置

指定的磁盘,要和客户机本身硬盘类型一致,都是nvme

清空所有已有分区

新建/boot,普通分区,使用了ext4文件系统,没使用xfs

新建物理卷pv.01

新建卷组server

创建逻辑卷

  swap

  / 使用了ext4

时间时区,删除了--no-ntp,也就是说,将来客户机要通过网络同步时间

root账户的密码

也可以新建更多用户,指定密码

关闭kdump

密码策略……

%post脚本段

比最早时候,简化,所有其他操作,都放到其他的sh脚本里

上面一段,让客户机wget获取ipcfg.sh并执行

中间一段,让客户机wget获取instsoft.sh,但是不执行(因为没法执行)

这里包含的是软件安装命令

下面一段,给客户机导入一个,一次性的任务计划

开机后1分钟延迟,立即执行

执行instsoft.sh脚本

最后确保客户机启用atd服务,才能开机执行任务计划

ks文件末尾,reboot

整个安装过程完成后,首次重启

在这次重启之前,客户机一直是在光盘启动模式里,进行安装

并没有启动属于自己的系统

重启后

客户机才启动了自己新安装的系统

5.安装后验证

1)服务器通过ssh连接客户机

比如#ssh servera.example.com,不需要密码就可以登录

2)查看两个客户机,各自的基本配置

   2.1)IP地址,以及是否静态配置(网卡配置文件,和nmcli的连接)

        主机名和主机名的环境变量

   2.3)客户机是否有正确的yum配置

        repo文件,yum list是否能列出内容

3)验证客户机自动化部署的两个web服务

   3.1)servera

        httpd服务器启动状态,是否有配置文件,主页文件在不在

        serverb

        nginx服务启动状态,是否有配置文件,主页文件在不在

   3.2)访问一下这两个服务

        在服务器,使用curl命令就行

        比如:#curl servera.example.com

              #curl serverb.example.com

        也可以细化一下访问验证

        分两步验证

          先验证web服务本身是否能通

          在验证主页是否能访问

或者浏览器访问

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值