Linux网络服务-PXE高效批量网络装机(部署PXE远程安装与kickstart无人值守安装)

一、部署PXE远程安装服务

1.1 搭建PXE远程安装服务器

1.1.1 PXE概述

PXE批量部署的优点

  • 规模化:同时装配多台服务器

  • 自动化:安装系统,配置各种服务

  • 远程实现:不需要光盘,U盘等安装介质
    在这里插入图片描述
    PXE,Pre-boot eXcution Environment

  • 预启动执行环境,在操作系统之前运行

  • 可用于远程安装,构建无盘工作站

服务端

  • 运行DHCP服务,用来分配地址,定位引导程序

  • 引导程序:微代码,存放在TFTP服务器中

  • 运行TFTP服务器,提供引导程序下载

  • TFTP服务器时UDP协议,端口号69

  • 镜像文件存放在:vsftpd,TCP协议,端口号20,21

客户端

  • 网卡支持PXE协议

  • 主板支持网络启动

1.1.2 配置PXE装机服务器

基本部署过程

  • 1.准备centos 7 安装源(yum仓库)
  • 2.安装并启用TFTP服务
  • 3.提供Linux内核、PXE引导程序等
  • 4.安装并启用DHCP服务
  • 5.配置启动菜单

TFTP服务及引导文件

  • 安装tftp-server软件包,启动tftp服务
  • 准备内核文件vmlinuz,初始化镜像initrd.img
  • 准备引导程序文件pxelinux.0(依赖于syslinux)

DHCP服务的PXE设置

[root@localhost ~]#yum install dhcp -y
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
[root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp: overwrite ‘/etc/dhcp/dhcpd.conf’? y
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf

 subnet 192.168.100.0 netmask 255.255.255.0 {
          range 192.168.100.20 192.168.100.30;
          option routers 192.168.100.100;
          option domain-name-servers 6.6.6.6;
          next-server 192.168.100.100;		'指定TFTP服务器地址'
          filename "pxelinux.0";		'filename:指定要下载的引导程序文件'
  }
[root@localhost ~]#systemctl start dhcpd
[root@localhost ~]#systemctl enable dhcpd

默认的启动菜单文件

  • 创建/var/lib/tftpboot/pxelinux.cfg/default

  • 最终创建的default文件输入内容

[root@localhost pxelinux.cfg]# vim default
default auto   '确保pxelinux.cfg目录已存在'
prompt 1   '一秒后启动'

label auto   '模式一'
        kernel vmlinuz    '内核vmlinuz'
        append initrd=initrd.img method=ftp://192.168.100.100/centos7  'append :追加,紧接着初始化镜像文件  方法=路径'

label linux text  '模式二'
        kernel vmlinuz
        append text initrd=initrd.img method=ftp://192.168.100.100/centos7  '文本模式安装'

label linux rescue  '模式三'
        kernel vmlinuz
        append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7  '进入救援模式'

PXE自动部署步骤总结
1.设置双网卡,

2.设置DHCP,用来自动获取IP地址,引导定位TFTP位置

  • next-server TFTP IP

  • filename “pxelinux.0”

3.设置TFTP(先安装tftp-server并设置)

  • 1.安装syslinux(包含pxelinux.0)并设置,引导程序
  • 2.压缩内核 vmlinuz (在iso镜像文件中获取)
  • 3.初始化文件 initrd.img (iso镜像文件中获取)
  • 4.默认配置文件 default (自建三个模式,默认时auto,指引FTP镜像系统文件位置)

1.2 验证PXE网络安装

  • 为客户机安装系统

    • 调整BIOS设置,以便从网络引导
    • 自动获取IP地址,并指定centos7安装源
    • 其余过程与本地安装相同
      环境
  • 使用VMware软件中centos 7系统

    • 打开一台centos 7

第一步,在服务器设置双网卡

在centos 7添加一个网络适配器,并设置为仅主机模式。		'用来装机,做服务器的网卡'
原本的网络适配器保持NAT模式不变。		'用来安装yum包'

第二步,设置添加的网卡IP地址,关闭防火墙

[root@localhost ~]# cd /etc/sysconfig/network-scripts
[root@localhost network-scripts]# cp -p ifcfg-ens33 ifcfg-ens36
[root@localhost network-scripts]# ls
[root@localhost network-scripts]# vim ifcfg-ens36
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens36"
UUID="fe60a0ac-7d04-46a3-b29c-633a50b88f33"		'UUDI删除掉'
DEVICE="ens36"
ONBOOT="yes"
IPADDR=192.168.100.100
NETMASK=255.255.255.0
GATEWAY=192.168.100.1

[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# ifconfig		'发现设置成功'
[root@localhost network-scripts]# systemctl stop firewalld.service 
[root@localhost network-scripts]# setenforce 0

第三步,设置DHCP服务

[root@localhost ~]#yum install dhcp* -y
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
[root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp: overwrite ‘/etc/dhcp/dhcpd.conf’? y
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf

 subnet 192.168.100.0 netmask 255.255.255.0 {
          range 192.168.100.20 192.168.100.30;
          option routers 192.168.100.100;
          option domain-name-servers 6.6.6.6;
          next-server 192.168.100.100;		'指定TFTP服务器地址'
          filename "pxelinux.0";		'filename:指定要下载的引导程序文件'
}

第四步:设置TFTP–配置安装tftp-server

[root@localhost ~]# yum install tftp-server -y
[root@localhost ~]# rpm -ql tftp-server
/etc/xinetd.d/tftp		'配置文件'
/usr/lib/systemd/system/tftp.service
/usr/lib/systemd/system/tftp.socket
/usr/sbin/in.tftpd
/usr/share/doc/tftp-server-5.2
/usr/share/doc/tftp-server-5.2/CHANGES
/usr/share/doc/tftp-server-5.2/README
/usr/share/doc/tftp-server-5.2/README.security
/usr/share/man/man8/in.tftpd.8.gz
/usr/share/man/man8/tftpd.8.gz
/var/lib/tftpboot	'站点'
[root@localhost network-scripts]# vim /etc/xinetd.d/tftp	'编辑配置文件'

        disable                 = no		'将此改成no'

[root@localhost network-scripts]# cd /var/lib/tftpboot	'进入站点'
[root@localhost tftpboot]# ls

第五步:安装并设置syslinux

[root@localhost tftpboot]# yum install syslinux -y	'安装syslinux'
[root@localhost tftpboot]# rpm -ql syslinux | grep pxelinux.0
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0
[root@localhost tftpboot]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot		'将syslinux中的pxelinux.0复制过来'
[root@localhost tftpboot]# ls
pxelinux.0
[root@localhost tftpboot]# yum install vsftpd -y
[root@localhost tftpboot]# rpm -ql vsftpd		'查看站点'
    ...省略内容
/var/ftp
/var/ftp/pub
[root@localhost tftpboot]# mkdir /var/ftp/centos7	'创建centos7目录用来挂载'
[root@localhost tftpboot]# cd /var/ftp
[root@localhost ftp]# ls
centos7  pub
[root@localhost ftp]# ls centos7	'发现镜像文件中没有东西'
'挂载之前先点击已连接'
[root@localhost ftp]# mount /dev/sr0 /var/ftp/centos7/	'挂载'
mount: /dev/sr0 is write-protected, mounting read-only
[root@localhost ftp]# df -hT
[root@localhost ftp]# ls centos7	'再次查看centos7文件,发现有了内容'
CentOS_BuildTag  EULA  images    LiveOS    repodata              RPM-GPG-KEY-CentOS-Testing-7
EFI              GPL   isolinux  Packages  RPM-GPG-KEY-CentOS-7  TRANS.TBL

第六步,在镜像中复制出文件

[root@localhost ftp]# cd centos7/images
[root@localhost images]# cd pxeboot
[root@localhost pxeboot]# ls		'发现目标文件,准备复制'
initrd.img  TRANS.TBL  vmlinuz
[root@localhost pxeboot]# cp vmlinuz initrd.img /var/lib/tftpboot/	'将文件复制到tftp站点中'
[root@localhost pxeboot]# ls /var/lib/tftpboot
initrd.img  pxelinux.0  vmlinuz

第七步,设置默认配置文件

[root@localhost pxeboot]# cd /var/lib/tftpboot
[root@localhost tftpboot]# ls
initrd.img  pxelinux.0  vmlinuz
[root@localhost tftpboot]# mkdir pxelinux.cfg	'创建pxelinux配置文件'
[root@localhost tftpboot]# cd pxelinux.cfg/
[root@localhost pxelinux.cfg]# vim default		'创建默认配置文件'
    '输入以下内容'
default auto
prompt 1

label auto
        kernel vmlinuz
        append initrd=initrd.img method=ftp://192.168.100.100/centos7

label linux text
        kernel vmlinuz
        append text initrd=initrd.img method=ftp://192.168.100.100/centos7

label linux rescue
        kernel vmlinuz
        append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7

[root@localhost pxelinux.cfg]#systemctl start dhcpd
[root@localhost pxelinux.cfg]#systemctl start tftp
[root@localhost pxelinux.cfg]#systemctl start vsftpd

第八步,开启虚拟机,选择
在这里插入图片描述

二、实现Kickstart无人值守安装

2.1 准备安装应答文件

kickstart无人值守技术

  • 创建应答文件,预先定义好各种安装设置
  • 免去交互设置过程,从而实现全自动化安装
  • 通过添加%post脚本,完成安装后的各种配置操作

应答文件的来源

  • 编辑CentOS 7 系统中现有的应答文件
    • /root/anaconda-ks.cfg
  • 使用system-config-kickstart工具创建新的应答文件
    • 需要安装system-config-kickstart软件包

2.2 实现批量自动装机

1、服务器添加双网卡(NAT和仅主机)

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls
ifcfg-ens33  ifdown-bnep  ifdown-ipv6  ifdown-routes    ifdown-tunnel  ifup-eth   ifup-isdn   ifup-ppp     ifup-TeamPort     network-functions
ifdown-eth   ifdown-isdn  ifdown-sit       ifup           ifup-ib    ifup-plip   ifup-routes  ifup-tunnel       network-functions-ipv6
ifcfg-lo     ifdown-ib    ifdown-post  ifdown-Team      ifup-aliases   ifup-ippp  ifup-plusb  ifup-sit     ifup-wireless
ifdown       ifdown-ippp  ifdown-ppp   ifdown-TeamPort  ifup-bnep      ifup-ipv6  ifup-post   ifup-Team    init.ipv6-global
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens37(以原有网卡为模板配置新的网卡)
[root@localhost network-scripts]# vim ifcfg-ens37
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens37
DEVICE=ens37
ONBOOT=yes
IPADDR=192.168.100.100  '以自己为网关,所以不设网关'
NETMASK=255.255.255.0
[root@localhost network-scripts]# systemctl restart network

2、安装并启用DHCP服务为裸机分配IP

[root@localhost ~]# yum install -y dhcp*
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf 
subnet 192.168.100.0 netmask 255.255.255.0 {
   range 192.168.100.128 192.168.100.200;
   option routers 192.168.100.100;'服务器网卡作为网关使用'
   option domain-name-servers 8.8.8.8;
   next-server 192.168.100.100;'tftp服务IP地址'
   filename "pxelinux.0";  '指向TFTP服务'
}

3、安装pxelinux.0的软件包

[root@localhost ~]# yum install -y syslinux
[root@localhost ~]# rpm -ql syslinux |grep pxelinux.0
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0

4、安装tftp-server服务快速加载引导程序

[root@localhost ~]# yum install -y tftp-server
[root@localhost ~]# rpm -ql tftp-server
/etc/xinetd.d/tftp'主配置文件'
/usr/lib/systemd/system/tftp.service
/usr/lib/systemd/system/tftp.socket
/usr/sbin/in.tftpd
/usr/share/doc/tftp-server-5.2
/usr/share/doc/tftp-server-5.2/CHANGES
/usr/share/doc/tftp-server-5.2/README
/usr/share/doc/tftp-server-5.2/README.security
/usr/share/man/man8/in.tftpd.8.gz
/usr/share/man/man8/tftpd.8.gz
/var/lib/tftpboot'站点文件目录'
[root@localhost ~]# vim /etc/xinetd.d/tftp 
disable= no'开启tftp服务'

5、安装ftp服务,挂载镜像

[root@localhost ~]# yum install -y vsftpd
[root@localhost ~]# cd /var/ftp/
[root@localhost ftp]# mkdir centos7
[root@localhost ftp]# mount /dev/cdrom /var/ftp/centos7/

6、在tftp站点上配置四大文件

[root@localhost ~]# cd /var/lib/tftpboot/
[root@localhost tftpboot]# cp /usr/share/syslinux/pxelinux.0 ./
[root@localhost images]# cd /var/ftp/centos7/images/pxeboot/
[root@localhost pxeboot]# cp -r initrd.img vmlinuz /var/lib/tftpboot/
[root@localhost tftpboot]# mkdir pxelinux.cfg
[root@localhost tftpboot]# cd pxelinux.cfg/
[root@localhost pxelinux.cfg]# ls
[root@localhost pxelinux.cfg]# vim default '这个配置文件中的需要自己写'
default auto
prompt 1

label auto
  kernel vmlinuz
  append initrd=initrd.img  method=ftp://192.168.100.100/centos7 

label linux text
  kernel vmlinuz
  append text initrd=initrd.img  method=ftp://192.168.100.100/centos7

label linux rescue
   kernel vmlinuz
   apptend rescue initrd=initrd.img  method=ftp://192.168.100.100/centos7
[root@localhost tftpboot]# ls
initrd.img  pxelinux.0  pxelinux.cfg  vmlinuz

7、创建应答文件

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
分区信息:
/boot 1024M
/home 4096M
/swap 4096M
/ 剩余空间都分配给他
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
把创建好的ks-cfg文件放在ftp站点上
点击左上角的文件保存—文件系统----var----ftp
在这里插入图片描述
9、复制服务器上ks.cfg文件中的安装包到kickstart的ks.cfg中

[root@localhost ~]# ls
anaconda-ks.cfg  initial-setup-ks.cfg  公共  模板  视频  图片  文档  下载  音乐  桌面
[root@localhost ~]# vim anaconda-ks.cfg '服务器系统的软件包作为模板,对照'
%packages
@^gnome-desktop-environment
@base
@core
@desktop-debugging
@development
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11
chrony
kexec-tools
%end
[root@localhost ~]# vim /var/ftp/ks.cfg 
'把上面的软件包粘贴在这个文件最末尾'

10、修改tftp站点中default文件

[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default 
default auto
prompt 1

label auto
  kernel vmlinuz
  append initrd=initrd.img  method=ftp://192.168.100.100/centos7 ks=ftp://192.168.100.100/ks.cfg
'ks指向ftp服务站点ks.cfg文件'

11、关闭防护防火墙,启动三大服务

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
setenforce: SELinux is disabled
[root@localhost ~]# systemctl restart network
[root@localhost ~]# systemctl start dhcpd
[root@localhost ~]# systemctl start tftp
[root@localhost ~]# systemctl start vsftpd

12、安装裸机
在这里插入图片描述

总结

pxe网络装机和kickstart技术综合应用

三个服务

【1】DHCP服务:让客户端获取IP地址,能主动联网PXE服务器,配置指向TFTP服务
【2】TFTP服务:简单文件系统,UDP协议端口号69,快速加载引导程序,默认配置文件指向FTP镜像位置
【3】FTP服务:文件系统镜像存放,TCP21端口连接服务UDP20端口数据传输

tftp四个文件

【1】default:需要先创建pxelinux.cfg目录,引导配置文件被加载
【2】vmlinuz:压缩内核,在default中被定义最先被加载
【3】initrd.img:初始化镜像文件,在default被定义第二个被加载
【4】pxelinux.0:引导程序,需要安装syslinux包才会有,在dhcp配置文件中被定义

tftp主配置文件和站点

【1】主配置文件:/etc/xinetd.d/tftp
【2】站点:/var/lib/tftpboot/

ftp站点

/var/ftp/

猜你喜欢

转载自blog.csdn.net/ycycyyc_/article/details/107441365