PXE+kickstart 无人值守安装操作系统

企业数据中心中,服务器一般都较多,假如新购买一百台服务器装系统及初始化,对于咱运维工程师来说,如果按照一台台安装工作量巨大,所以掌握kickstart无人值守系统是必须的

一、kickstart框架

PXE+kickstart 无人值守安装操作系统

二、安装准备

2.1 kickstart 服务器说明

系统:centos7.8       内存:2G        cpu:1核        

网卡eth33:192.168.197.128 /24

2.2 关闭selinux

setenforce 0        #临时关闭SELinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config  #永久关闭SELinux(重启生效)

systemctl stop firewalld.service    #临时关闭防火墙

systemctl disable firewalld.service    #永久关闭防火墙

2.3 syslinux安装

syslinux 是引导加载程序,是一个小型的linux系统

yum install syslinux syslinux-devel -y

安装完成后,在/usr/share/syslinux中会有pexlinux.0 ,用来引导系统

PXE+kickstart 无人值守安装操作系统

2.4 httpd+dhcp+tftp+Xinetd 服务安装

yum install httpd httpd-devel dhcp* tftp-server xinetd -y

三、httpd+tftp+dhcp服务配置

3.1 httpd服务配置

httpd服务主要是提供给客户端下载需要的软件包,所以镜像软件需要挂载至httpd根目录

mkdir -p /var/www/html/centos7.8/

mount /dev/cdrom /var/www/html/centos7.8/        # 可以cp拷贝过去,可加入开机项

# 建议服务器存放镜像,建立软连接 比mount要好

# 启动服务

systemctl restart httpd.service

systemctl enable httpd.service

测试访问正常

PXE+kickstart 无人值守安装操作系统

3.2 tftp配置

vim /etc/xinetd.d/tftp

只需设置disable=no,设置tftp开机自启动,同时记录tftp根目录/var/lib/tftpboot,用于后续文件的存放

service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot
        disable                 = no    # 修改此项即可
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

启动服务

systemctl restart xinetd

<!------------------------------重要--------------------------------->

重要:将一些文件传至tftp目录

mkdir -p /var/lib/tftpboot

cp /var/www/html/centos7.8/images/pxeboot/vmlinuz /var/lib/tftpboot

cp /var/www/html/centos7.8/images/pxeboot/initrd.img /var/lib/tftpboot

cp /var/www/html/centos7.8/isolinux/vesamenu.c32  /var/lib/tftpboot

cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot

mkdir -p /var/lib/tftpboot/pxelinux.cfg

cp /var/www/html/centos7.8/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

chmod 644  /var/lib/tftpboot/pxelinux.cfg/default

拷贝完成后/var/lib/tftpboot下一共5个文件:

initrd.img  pxelinux.0   vesamenu.c32  vmlinuz     pxelinux.cfg/default

PXE+kickstart 无人值守安装操作系统

修改/var/lib/tftpboot/pxelinux.cfg/default

# 默认加载菜单
default vesamenu.c32
timeout 100
display boot.msg
# menu 为背景标题颜色...
menu clear
menu background splash.png
menu title CentOS 7
menu vshift 8
menu rows 18
menu margin 8
menu helpmsgrow 15
menu tabmsgrow 13

label linux
 menu label ^Install CentOS Linux 7
 menu default
 # 指定内核
 kernel vmlinuz 
 # 追加给内核参数 initrd:最小的linux系统   inst.repo:指定ks.cfg文件路径
 append initrd=initrd.img inst.repo=http://192.168.197.128/centos7.8 quiet ks=http://192.168.197.128/ks.cfg 

label check
 menu label Test this ^media & install CentOS Linux 7
 kernel vmlinuz
 append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet

3.3 DHCP配置

vim /etc/dhcp/dhcpd.conf

<!--提示:如果复制至vim会全部注释,可以复制前输入 :set paste-->

# 动态更新DNS
ddns-update-style interim;
# 不允许更新DNS
ignore client-updates;
# tftp服务器地址
next-server 192.168.197.128;  
# tftp服务器根目录下的文件名
filename "pxelinux.0";
# 允许PXE启动
allow booting;
# 允许支持bootp
allow bootp;
# 设置DHCP网段掩码
subnet 192.168.197.0 netmask 255.255.255.0 { 
# 设置网关
option routers     192.168.197.2;
# 设置掩码
option subnet-mask   255.255.255.0;
#设置dhcp服务器IP地址租用的范围(和服务器在一个网段)
range dynamic-bootp 192.168.197.150 192.168.197.200;
#默认租约时间
default-lease-time 3600;
#最大租约时间
max-lease-time 7200;
}

绑定DHCP网卡(如果一台服务器有多个网卡,需要指定DHCP服务器的网卡)

vim /etc/sysconfig/dhcpd

# 根据实际网卡名填写
DHCPDARGS=eth33

输入dhcpd 测试正常

PXE+kickstart 无人值守安装操作系统

启动服务

systemctl restart dhcpd.service

systemctl enable dhcpd.service

四、图形化配置ks.cfg文件

4.1 ks.cfg介绍

ks.cfg文件是安装操作系统的一些详细的配置,分为三段

  1. 指令段,用于自动应答图形安装时的手动操作(时区,键盘之类的)
  2. 包选择段,使用 %packages 引导使用
  3. 脚本段,%pre引导 预安装脚本段;%post引导后安装脚本段 ,%end结束

由于kickstart的参数过多,我们使用图形化配置,不便于出错

4.2 centos7安装图形化(已安装跳过)

首先切换到图形化界面,由于之前未安装图形化,故先安装图形化界面

yum groupinstall "X Window System" -y

输入yum grouplist查看图形化安装组

PXE+kickstart 无人值守安装操作系统

yum groupinstall "GNOME Desktop" "Graphical Administration Tools"

安装完成后输入startx即可进入图形化

4.3 (可选)kisckstart 图形化安装工具--新手推荐(比如我 哈哈)

yum install system-config-kickstart -y

PXE+kickstart 无人值守安装操作系统

开始配置

PXE+kickstart 无人值守安装操作系统

PXE+kickstart 无人值守安装操作系统

PXE+kickstart 无人值守安装操作系统

PXE+kickstart 无人值守安装操作系统

PXE+kickstart 无人值守安装操作系统

PXE+kickstart 无人值守安装操作系统

PXE+kickstart 无人值守安装操作系统

PXE+kickstart 无人值守安装操作系统

PXE+kickstart 无人值守安装操作系统

<!--只要将vim /etc/yum.repos.d/CentOS-Base.repo(文件名根据实际情况修改) 中的[base]一项 复制一份改成[development]放置文件末尾,然后输入yum clean all && yum makecache,重开kickstart软件即可-->

PXE+kickstart 无人值守安装操作系统

PXE+kickstart 无人值守安装操作系统

PXE+kickstart 无人值守安装操作系统

PXE+kickstart 无人值守安装操作系统

PXE+kickstart 无人值守安装操作系统

生成的ks.cfg配置如下

#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$V.oK4NE.$RPASHZXvyHMPNqym7KwGe1
# System language
lang en_US
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use graphical install
graphical
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx

# Firewall configuration
firewall --disabled
# Network information
network  --bootproto=dhcp --device=ehto
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# Use network installation
url --url="http://192.168.197.128/centos7.8"
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --fstype="xfs" --size=512
part / --fstype="xfs" --grow --size=1

%post
echo "set hostname"
hostnamectl set-hostname k8s-node03

echo " set yum"
rm -rf /etc/yum.repos.d/*
cat>/etc/yum.repos.d/centos7.8.repo<<EOF
[base]
name=centos7.8
baseurl=http://192.168.197.128/yum/centos7.8
enable=1
gpgcheck=0
EOF
yum clean all
yum install -y vsftp*

useradd test
echo Huawei12#$|passwd --stdin test
%end

%packages
@python-web

%end

五、测试PXE部署

PXE+kickstart 无人值守安装操作系统

PXE+kickstart 无人值守安装操作系统

PXE+kickstart 无人值守安装操作系统

PXE+kickstart 无人值守安装操作系统

测试安装正常,且填写的脚本也已经运行完成。

重要:centos7.3以后的要最少2G内存,不然会报错,折腾到凌晨,哭死
报错界面如下
PXE+kickstart 无人值守安装操作系统


桃李不言 下自成蹊