Pxe+Dhcp+Httpd+Tftp+Kickstart搭建无人值守服务器

原理和概念

  • PXE :Pxe并不是一种安装方式,而是一种引导的方式,进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE (Pre-boot Execution Environment)协议使计算机可以通过网络启动,简而言之就是引导从网络中下载系统来安装。

  • Dhcp: 用来给 客户端(将要安装系统的主机)分配IP 地址。

  • Httpd:超文本传输协议,这里的角色仅提供安装系统所需的软件包。

  • Tftp: 服务器用来存放PXE的相关文件,比如:系统引导文件;

  • Kickstart : KickStart是一种无人职守安装方式。KickStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为 ks.cfg的文件;在其后的安装过程中(不只局限于生成KickStart安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找 KickStart生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。这样,如果KickStart文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统,并结束安装。
    设置BIOS引导顺序为: 硬盘,网络

    pxe.jpg


实验环境:Vmware Workstation 15
系统平台:Centos7 (界面版本)
网络模式:仅主机模式(Vmnet10网卡)

#关闭防火墙
[root@server yum.repos.d]# systemctl stop firewalld 
#临时关闭selinux
[root@server yum.repos.d]# setenforce 0
#搭建本地源仓库安装需要的软件
[root@server yum.repos.d]# mount /dev/sr0 /home/lemonchen/iso
[root@server yum.repos.d]# vim /etc/yum.repos.d/CentOS-Base.repo
[local]
name=local
baseurl=file:///home/lemonchen/iso
enable=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#增加一块网卡并配置
nmcli con add con-name ens37 type ethernet ifname ens37 ipv4.addresses 10.1.0.1/24 ipv4.method manual
Connection 'ens37' (28b0b6a1-0377-4e4b-87f6-ef4c6b2b6da0) successfully added.successfully added.
#启用该网卡
[root@localhost ~]# nmcli con up ens37
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
#查看是否网卡连接成功
[root@localhost ~]# nmcli device status
DEVICE  TYPE      STATE      CONNECTION 
ens33   ethernet  connected  ens33      
ens37   ethernet  connected  ens37      
lo      loopback  unmanaged  --

1、 配置Httpd服务器

#httpd服务器搭建 默认端口80
[root@server ~]# yum -y install httpd
#httpd的主配置文件是
/etc/httpd/conf/httpd.conf
#启动httpd服务
[root@server ~]# systemctl start httpd
#设置开机自启动
[root@server ~]# systemctl enable httpd
#在该目录下创建install_iso(存放系统文件)ks(存放后续kickstart配置文件)
[root@server ~]# mkdir /var/www/html/{install_iso,ks}
#挂载系统文件到install_iso下
[root@server ~]# mount /dev/sr0 /var/www/html/install_iso/
#添加开机自动挂载
[root@server ~]# echo '/dev/sr0 /var/www/html/install_iso' >> /etc/fstab

2、 配置TFTP服务器

#TfTP服务器搭建 默认端口69
[root@server ~]# yum -y install tftp-server xinetd
#启动tftp服务
[root@server ~]# systemctl enable tftp --now
#安装syslinux
[root@server ~]# yum -y install syslinux
#拷贝syslinux文件啊,将这个文件放入到/var/lib/tftpboot下
#说明:syslinux是一个功能强大的引导加载程序,而且兼容各种介质
[root@server ~]# cp -rf /usr/share/syslinux/* /var/lib/tftpboot/
#拷贝镜像下的vmlinuz initrd.img到tftp下
[root@server ~]# cp /var/www/html/install_iso/isolinux/vmlinuz /var/www/html/install_iso/isolinux/initrd.img /var/lib/tftpboot/
#创建一个文件夹
[root@localhost tftpboot]# mkdir /var/lib/tftpboot/pxelinux.cfg
#拷贝引导配置文件到tftp目录下并修改
[root@server ~]# cp /var/www/html/install_iso/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
#default
[root@localhost tftpboot]# cat /var/lib/tftpboot/pxelinux.cfg/default 
default menu.c32
label lemonchenpxe
kernel vmlinuz
append initrd=initrd.img method=http://10.1.0.1/install_iso #httpd下的系统文件路径

3、 配置DHCP服务器

#安装dhcp服务
[root@server cache]# yum -y install dhcp
#copy模板到dhcp配置目录下
[root@server ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
[root@localhost tftpboot]# cat /etc/dhcp/dhcpd.conf 
# dhcpd.conf
# # A slightly different configuration for an internal subnet.
#dhcp服务器告诉dhcp客户端,如果你是pxe引导,那么tftp服务器的地址
#是10.1.0.1,你可以到tftp服务器上的根⽬录上下载pxelinux.0
subnet 10.1.0.0 netmask 255.255.255.0 { #ip子网及子网掩码
  range 10.1.0.100 10.1.0.200; #网络段
  next-server 10.1.0.1; #指向服务器
  filename "pxelinux.0"; #指向安装文件
}

4、 Kickstart配置自动化安装

#就是自动化的一个配置
[root@localhost ~]# ls
anaconda-ks.cfg
#拷贝一份配置到httpd目录下
[root@localhost ~]# cp anaconda-ks.cfg /var/www/html/ks/lemonchen-ks.cfg

kickstart配置

[root@localhost ks]# cat anaconda-ks.cfg 
#version=DEVEL
# System authorization information(系统授权信息)
auth --enableshadow --passalgo=sha512
# Use CDROM installation media(使用光盘安装介质)
#cdrom
url --url = "http://10.1.0.1/install_iso" #下载安装路径
# Use graphical install(使用图形化安装)
graphical
# Run the Setup Agent on first boot(在第一次引导时运行安装代理)
firstboot --enable
ignoredisk --only-use=sda
# Keyboard layouts(键盘布局)
keyboard --vckeymap=us --xlayouts='us'
# System language(系统语言)
lang en_US.UTF-8

# Network information(网络信息)
network  --bootproto=dhcp --device=ens33 --onboot=off --ipv6=auto --no-activate
network  --hostname=localhost.localdomain

# Root password(根密码)
rootpw --iscrypted $1$MWC7lQya$o/114lD9L58dVYPiJvNoM0
# System services(系统服务)
services --enabled="chronyd"
# System timezone(系统时区)
timezone Asia/Shanghai 
user --groups=wheel --name=lemonchen --password=$1$MWC7lQya$o/114lD9L58dVYPiJvNoM0 --iscrypted --gecos="lemonchen"
# System bootloader configuration(系统引导装载程序配置)
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
autopart --type=lvm
# Partition clearing information(分区结算信息)
clearpart --none --initlabel
#最小化安装 
%packages
@^minimal
@core
chrony
kexec-tools

%end
#安装完成后自动重启。
reboot

%addon com_redhat_kdump --enable --reserve-mb='auto'

%end

%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
[root@localhost ks]# 

default修改后

[root@localhost tftpboot]# cat /var/lib/tftpboot/pxelinux.cfg/default 
default menu.c32
timeout 10
label lemonchenpxe
kernel vmlinuz
append initrd=initrd.img method=http://10.1.0.1/install_iso ks=http://10.1.0.1/ks/lemonchen-ks.cfg#httpd下的系统文件路径
  • 如果打开访问不了,需要增加权限


    企业微信截图_16024146907930.png
[root@localhost ks]# chmod o+r /var/www/html/ks/lemonchen-ks.cfg

5、 基本就完成了,后续的更精细如何配置需要好好研究了

auto_install.gif

你可能感兴趣的:(Pxe+Dhcp+Httpd+Tftp+Kickstart搭建无人值守服务器)