PXE+Kickstart自动化安装操作系统

一、自动化部署原理

1、PXE原理

PXE(Preboot execution Environment),即全程预启动执行环境,也称之为预执行环境。此环境提供了一种使用网络接口启动计算机的机制。这种机制使计算机的启动不用依赖本地数据存储设备(如硬盘)或本地已安装的操作系统。

2、Kickstart

Kickstart是一种无人值守的安装方式。其工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成ks.cfg文件。在安装过程中,安装程序会首先去查找ks.cfg这个文件,当找到合适的参数时,就会采用所找到的参数进行进一步的安装,然而,当没有找到合适参数的时候,就需要安装人员进行手工干预填参了。

3、DHCP

dhcp用来给将要安装系统的客户主机分配IP地址,也可以指定文件位置。

4、HTTPD

httpd,即超文本传输协议,本服务主要提供系统镜像源以及kickstart的配置文件等。

5、TFTP

本服务主要用来存放PXE的相关文件,例如:系统引导文件。

6、部署流程

(1)PXE客户机发出DHCP请求,向DHCP服务器申请IP地址。

(2)DHCP服务器响应PXE客户机的请求,自动从IP地址池中分配一个IP地址给PXE客户机,并且告知PXE客户机:TFTP服务器的IP地址和PXE引导程序文件pxelinux.0,默认存放在TFTP服务的共享目录/var/lib/tftpboot/中。

(3)PXE客户机向TFTP服务器发起获取pxelinux.0引导程序文件的请求。

(4)TFTP服务器响应PXE客户机的请求,将其共享的pxelinux.0文件传输给PXE客户机。

(5)PXE客户机向TFTP服务器发起获取ldlinux.c32和pxeilnux.cfg/default的PXE引导配置文件请求。

(6)TFTP服务器响应PXE客户机的请求,将ldlinux.c32和pxeilnux.cfg/default文件传输给PXE客户机。PXE客户端展示pxelinux.cfg/default文件中的引导项,由用户指定选择其中一个引导项,或等待默认时间后根据文件配置中的默认引导项进行自动引导。

(7)PXE客户机根据default文件配置向TFTP服务器发起获取对应引导项的vmlinuxz压缩的虚拟机linux内核文件的请求。

(8)TFTP服务器响应PXE客户机的请求,将其共享的vmlinuxz文件传输给PXE客户机。

(9)PXE客户机根据default文件配置向TFTP服务器发起获取对应引导项的initrd.img临时文件系统文件的请求。

(10)TFTP服务器响应PXE客户机的请求,将其共享的initrd.img文件传输给PXE客户机。

(11)PXE客户机根据default文件向http、htp、nfs等网络共享服务发起获取对应ks.cfg文件。

(12)PXE客户机读取ks.cfg文件,其参数包括系统语言、时区、root用户密码、磁盘分区、安装文件位置、完成安装后自动重启等。

二、自动化部署流程

1、实验环境

PXE server:

        系统:RHEL7.9

        IP地址:172.25.254.10

2、基础配置

#配置vmset.sh脚本文件,可通过此脚本快速配置IP地址、DNS、网关、主机名、解析
[root@nginx ~]# cat /bin/vmset.sh 
#!/bin/bash
rm -fr /etc/sysconfig/network-scripts/ifcfg-$1
cat > /etc/sysconfig/network-scripts/ifcfg-$1 <<EOF
TYPE=Ethernet
BOOTPROTO=none
NAME=$1
DEVICE=$1
ONBOOT=yes
IPADDR=$2
PREFIX=24
GATEWAY=172.25.254.2
DNS1=114.114.114.114
EOF

nmcli connection reload
nmcli connection up $1

hostnamectl set-hostname $3

cat > /etc/hosts <<EOF
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
$2	$3
EOF

#给脚本添加执行权限
[root@nginx ~]# chmod +x /bin/vmset.sh


#执行脚本,配置相应信息
[root@nginx ~]# vmset.sh ens33 172.25.254.10 pxe-server
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
[root@nginx ~]# bash
[root@pxe-server ~]#

3、关闭防火墙及selinux

#firewalld
#disable 关闭开机自启
#--now    立刻关闭
[root@pxe-server ~]# systemctl disable --now firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

#selinux
[root@pxe-server ~]# grubby --update-kernel ALL --args selinux=0
[root@pxe-server ~]# reboot    #重启生效
[root@pxe-server ~]# getenforce
Disabled

3、配置本地yum源

#挂载镜像源
[root@pxe-server ~]# mount /dev/sr0 /rhel7/
mount: /dev/sr0 is write-protected, mounting read-only

#配置yum本地源
[root@pxe-server yum.repos.d]# cat base.repo
[repo]
name=repo
baseurl=file:///rhel7
gpgcheck=0

4、kickstart部署

在rhel7上,我们可以通过图形界面进行kickstart的配置

#下载system-config-kickstart软件包
[root@pxe-server ~]# yum install system-config-kickstart -y

然后执行system-config-kickstart命令进入图形界面,进行配置

df1d7ddc5f0642c3bb5ea78b7dbb2c69.png5bb51ba6fb99481ba709bc4ee2c328c8.pnga72243be97f1451f9bd650e5f90fb35d.png013f313c4224464c8bd96be92470fbea.pngbad06e9a846340f4b7673a9893a7edb8.pngadc8892f2cc74763bcc1704f6a8aae3e.pngd1896ec820654990a56497924c988685.png632c057232bc4d79bb14a2042f3d0f0a.pnge0db5a56df754ffb99b3563cc94578ca.png

7e9da74f24234aea82813d1d264f81b8.png14c02225ab7b4662955b4f8afda058c3.png

生成ks.cfg文件到/root目录后,我们还可以添加一些内容,如安装httpd软件包

d79b1674666942bc91ab9ab884488238.png

5、网页访问ks.cfg

#下载httpd软件包
[root@pxe-server ~]# yum install httpd -y

#将ks.cfg文件移动到httpd服务的默认发布目录/var/www/html
[root@pxe-server ~]# cp ks.cfg /var/www/html/

#启动httpd服务,并设置开机自启动
[root@pxe-server ~]# systemctl enable --now httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

然后我们通过浏览器访问IP/ks.cfg,即可看到ks.cfg文件内容

769b7673ba0a4457a41b74b36427ae37.png

6、网页访问镜像源

#将我们挂载镜像的目录/rhel7链接到httpd默认发布目录/var/www/html
[root@pxe-server ~]# ln -s /rhel7/ /var/www/html/

同理,我们通过可以通过浏览器访问IP/rhel7,即可看到我们挂载镜像源的文件内容

fa89ea6c057d4ebf8e01dee33e46be59.png

7、部署DHCP服务

#首先,下载dhcp安装包
[root@pxe-server ~]# yum install dhcp -y

#进入dhcp配置文件,我们可以发现仅有注释,没有任何配置内容
[root@pxe-server ~]# cd /etc/dhcp/
[root@pxe-server dhcp]# vim dhcpd.conf
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example
#   see dhcpd.conf(5) man page

#我们可以根据注释,将/usr/share/doc/dhcp*/dhcpd.conf.example这个文件复制到我们默认的配置目录中
#cp前的\即转义符,表示使用cp原命令,而不是alias命名后的命令。-f表示强制覆盖拷贝
[root@pxe-server dhcp]# \cp -f /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf


#然后进入/etc/dhcp/dhcpd.conf配置文件进行一些修改
[root@pxe-server ~]# vim /etc/dhcp/dhcpd.conf
option domain-name "example.org";
option domain-name-servers 114.114.114.114;

default-lease-time 600;
max-lease-time 7200;

log-facility local7;

subnet 172.25.254.0 netmask 255.255.255.0{     #DHCP地址池子网,子网掩码
  range 172.25.254.30 172.25.254.40;           #DHCP地址池范围
  option routers 172.25.254.2;                 #网关
  next-server 172.25.254.10;                   #引导服务tftp的地址
  filename "pxelinux.0";                       #引导程序文件名
}

#修改完配置文件后,启动DHCP服务,并设置开机自启动
[root@pxe-server ~]# systemctl enable --now dhcpd
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.

8、部署TFTP服务

#同样,我们要先下载安装包,这里需要下载的是tftp-server这个安装包
[root@pxe-server ~]# yum search tftp
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager

This system is not registered with an entitlement server. You can use subscription-manager to register.

================================ N/S matched: tftp ================================
syslinux-tftpboot.noarch : SYSLINUX modules in /var/lib/tftpboot, available for
                         : network booting
tftp.x86_64 : The client for the Trivial File Transfer Protocol (TFTP)
tftp-server.x86_64 : The server for the Trivial File Transfer Protocol (TFTP)

  Name and summary matches only, use "search all" for everything.
[root@pxe-server ~]# yum install tftp-server -y

#在rhel7中,共享pxelinux.0数据文件的网络服务是由syslinux这个软件包所提供的
[root@pxe-server ~]# yum install syslinux -y

#下载完成后,我们需要将pxelinux.0以及/rhel7/isolinux/中的所有文件移动到/var/lib/tftpboot/下
[root@pxe-server ~]# cd /var/lib/tftpboot/
[root@pxe-server tftpboot]# cp /usr/share/syslinux/pxelinux.0 .
[root@pxe-server tftpboot]# cp /rhel7/isolinux/* .
[root@pxe-server tftpboot]# ll
total 112148
-r--r--r-- 1 root root     2048 Aug  4 20:46 boot.cat
-r--r--r-- 1 root root       84 Aug  4 20:46 boot.msg
-r--r--r-- 1 root root      321 Aug  4 20:46 grub.conf
-r--r--r-- 1 root root 51211620 Aug  4 20:46 initrd.img
-r--r--r-- 1 root root    24576 Aug  4 20:46 isolinux.bin
-r--r--r-- 1 root root     3166 Aug  4 20:46 isolinux.cfg
-r--r--r-- 1 root root   190896 Aug  4 20:46 memtest
-rw-r--r-- 1 root root    26743 Aug  4 20:46 pxelinux.0
-r--r--r-- 1 root root      186 Aug  4 20:46 splash.png
-r--r--r-- 1 root root     2438 Aug  4 20:46 TRANS.TBL
-r--r--r-- 1 root root 56427369 Aug  4 20:46 upgrade.img
-r--r--r-- 1 root root   153104 Aug  4 20:46 vesamenu.c32
-r-xr-xr-x 1 root root  6769496 Aug  4 20:46 vmlinuz

#然后,在/var/lib/tftpboot/中创建pxelinux.cfg目录,并将isolinux.cfg引导文件模板拷贝到此目录中,并改名为default
[root@pxe-server tftpboot]# mkdir pxelinux.cfg
[root@pxe-server tftpboot]# mv isolinux.cfg pxelinux.cfg/default

然后,对/var/lib/tftpboot/pxelinux.cfg/default文件进行修改

4939d787671f402297c10d33ec1cfd90.png

52ea969f9904440a9be3270ba30652e9.png

修改完成后,由于此文件没有修改权限,我们通过:x!或者:wq!强制保存退出即可,然后启动tftp服务并设置开机自启动

[root@pxe-server tftpboot]# systemctl enable --now tftp
Created symlink from /etc/systemd/system/sockets.target.wants/tftp.socket to /usr/lib/systemd/system/tftp.socket.

三、自动化部署装机验证

因为我们在PXE服务器中已经设置了DHCP服务,所以一定要注意,关掉虚拟机软件中的DHCP服务,否则会与我们服务器中的DHCP产生冲突

53a81846c90f44868e70995fc017447c.png

ef2ba6563e9a48398963e7c575069539.png

我们新建一台rhel7的虚拟机,并且删除CD/DVD(SATA)

b489e3a8e9a64733a9c461ad31f60cd0.png

然后通过打开电源时进入固件,开机后就会进入BIOS模式

48d804e440fd46c59cce6110438cc370.png

进入BIOS界面后,我们切到Boot,将Net'work boot from Intel E1000移动到首行,即通过网卡模式启动

4253b82f20004e139f29a37b35f75107.png

然后保存退出,启动虚拟机

d69f9859646f4ba9af74e80b7c492442.png

启动后,就能够进行全自动化装机,我们等待装好即可。

0a159ad60fc44140aaf9835286e0415c.png

安装完成后,进行验证即可

fcef92bbb88a4e41b8987d53c1b998c4.png

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SUPER COW

云原生探索,您的支持,动力无限

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值