PXE+kickstart 无人值守安装操作系统
企业数据中心中,服务器一般都较多,假如新购买一百台服务器装系统及初始化,对于咱运维工程师来说,如果按照一台台安装工作量巨大,所以掌握kickstart无人值守系统是必须的
一、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 ,用来引导系统
2.4 httpd+dhcp+tftp+Xinetd 服务安装
yum install httpd httpd-devel dhcp* tftp-server xinetd -y
三、tftp+dhcp+httpd服务配置
3.1 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
修改/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.2 DHCP配置
vim /etc/dhcp/dhcpd.conf
# 动态更新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 测试正常
启动服务
systemctl restart dhcpd.service
systemctl enable dhcpd.service
3.3 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
测试访问正常
四、图形化配置ks.cfg文件
4.1 ks.cfg介绍
ks.cfg文件是安装操作系统的一些详细的配置,分为三段
- 指令段,用于自动应答图形安装时的手动操作(时区,键盘之类的)
- 包选择段,使用 %packages 引导使用
- 脚本段,%pre引导 预安装脚本段;%post引导后安装脚本段 ,%end结束
由于kickstart的参数过多,我们使用图形化配置,不便于出错
4.2 centos7安装图形化(已安装跳过)
首先切换到图形化界面,由于之前未安装图形化,故先安装图形化界面
yum groupinstall "X Window System" -y
输入yum grouplist
查看图形化安装组
yum groupinstall "GNOME Desktop" "Graphical Administration Tools"
安装完成后输入startx即可进入图形化
4.3 (可选)kisckstart 图形化安装工具--新手推荐(比如我 哈哈)
yum install system-config-kickstart -y
开始配置
生成的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<
五、测试PXE部署
测试安装正常,且填写的脚本也已经运行完成。
重要:centos7.3以后的要最少2G内存,不然会报错,折腾到凌晨,哭死
报错界面如下
桃李不言 下自成蹊