使用pxe和kickstart进行无人值守批量安装centos7

1.概述

本篇博客主要通过在虚拟化环境试验:使用pxe引导方式,配合自应答配置kickstart,进行无人值守批量安装centos7.9操作系统。

操作系统的安装过程一般是这样的:

  • 让裸机从本地或者网络加载引导程序
  • 引导程序在本地或者网络加载操作系统和自应答配置文件

2. 部署过程

此过程在一台kvm虚拟机node17上操作。主要包括:

  • dhcp服务。负责为client分配ip,指定next-server和filename
  • tftp服务。负责为client配置操作系统类型,引导文件等
  • xinetd软件。负责指定tftp根目录
  • syslinux软件。产生pxe引导所需要的引导文件。
  • vsftpd/httpd/nfs-utils。存放操作系统镜像或者ks.cfg文件
  • system-config-kickstart。用于生成ks.cfg文件

2.1 dhcp服务

安装dhcp服务器,yum -y install dhcp

配置dhcpd.conf,vim /etc/dhcp/dhcpd.conf

ddns-update-style none;
default-lease-time 259200;
max-lease-time 518400;    
option routers 192.168.80.1;
option domain-name-servers 192.168.80.1;
subnet 192.168.80.0 netmask 255.255.255.0 {
    range 192.168.80.51 192.168.80.59;
    option subnet-mask 255.255.255.0;
    next-server 192.168.80.17;
    filename "pxelinux.0";
}

启动dhcpd服务

systemctl start dhcpd && systemctl enable dhcpd

2.2 tftp/xinetd服务

安装tftp,yum -y install tftp-server xinetd

启动:systemctl start tftp && systemctl enable tftp

查询:netstat -tupln|egrep 69

udp        0      0 0.0.0.0:69              0.0.0.0:*                           1/systemd

安装syslinux,yum -y install syslinux

从syslinux安装目录/usr/share/syslinux中拷贝所需要的文件到tftp根目录/var/lib/tftpboot

cp -a /usr/share/syslinux/{menu.c32,vesamenu.c32,pxelinux.0} /var/lib/tftpboot

在tftp服务根目录下创建两个目录:centos7.9pxelinux.cnf

mkdir -p /var/lib/tftpboot/{centos7.9,pxelinux.cfg}

挂载centos7.9的镜像,拷贝所需要的引导文件

mkdir -p /mnt/cdrom
mount -o loop CentOS-7-x86_64-Minimal-2009.iso /mnt/cdrom/
cd /mnt/cdrom/isolinux/
cp vmlinuz initrd.img /var/lib/tftpboot/centos7.9/
cp isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

目录结构如下:

[root@node17][/var/lib/tftpboot]
$ pwd
/var/lib/tftpboot
[root@node17][/var/lib/tftpboot]
$ tree .
.
├── centos7.9
│   ├── initrd.img
│   └── vmlinuz
├── menu.c32
├── pxelinux.0
├── pxelinux.cfg
│   └── default
└── vesamenu.c32

修改pxelinux.cfg下面default文件内容:

default vesamenu.c32
timeout 600
display boot.msg
menu clear
menu background splash.png
menu title CentOS 7 menu
menu vshift 8
menu rows 18
menu margin 8
#menu hidden
menu helpmsgrow 15
menu tabmsgrow 13
menu color border * #00000000 #00000000 none
menu color sel 0 #ffffffff #00000000 none
menu color title 0 #ff7ba3d0 #00000000 none
menu color tabmsg 0 #ff3a6496 #00000000 none
menu color unsel 0 #84b8ffff #00000000 none
menu color hotsel 0 #84b8ffff #00000000 none
menu color hotkey 0 #ffffffff #00000000 none
menu color help 0 #ffffffff #00000000 none
menu color scrollbar 0 #ffffffff #ff355594 none
menu color timeout 0 #ffffffff #00000000 none
menu color timeout_msg 0 #ffffffff #00000000 none
menu color cmdmark 0 #84b8ffff #00000000 none
menu color cmdline 0 #ffffffff #00000000 none

label linux
  menu label ^Install CentOS 7.9 through pxe
  kernel ./centos7.9/vmlinuz
  append initrd=./centos7.9/initrd.img inst.stage2=ftp://192.168.80.17 quiet net.ifnames=0 biosdevname

default是比较重要的一个文件,主要是定义了引导界面的内容

而lable则是定义了操作系统的各类引导参数,包括kernal和各种内核参数

2.3 安装vsftpd

执行安装:yum -y install vsftpd

配置vsftpd,vim /etc/vsftpd/vsftpd.conf,保证能够匿名访问。非匿名也可以,不过没有必要。

anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
xferlog_std_format=YES

启动vsftpd:systemctl start vsftpd && systemctl enable vsftpd

把操作系统解压的文件,拷贝到vsftpd目录

cp -r /mnt/cdrom/* /var/ftp/

执行ftp测试:curl ftp://192.168.80.17,能够看到操作系统的镜像解压后的文件

2.4 编辑ks.cfg文件

ks.cfg文件可以自行编辑,也可以用图像化生成。

install 
url --url="ftp://192.168.80.17"
text
auth --enableshadow --passalgo=sha512
firewall --disabled
firstboot --disabled
ignoredisk --only-use=vda
keyboard --vckeymap=us --xlayouts='us'
lang en_US.UTF-8
network  --onboot=yes --bootproto=dhcp --device=eth0 --noipv6 --activate
reboot
rootpw --iscrypted $6$dJiqrlRIoif61j3g$ECII6Ne7.Nni52/s4.4mcoY/c1hwOFNjDRPosLhGpjtI.W.e76IuQ3mvCG8CVDR8nRdUjG4EF74XQOgH8dJva0
services --disabled="chronyd"
selinux --disabled
timezone Asia/Shanghai --isUtc --nontp
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=vda
clearpart --none --initlabel
part /boot --fstype="xfs" --ondisk=vda --size=250
part swap --fstype="swap" --size=250
part / --fstype="xfs" --ondisk=vda --size=19979

%packages
@^minimal
@core
kexec-tools
%end

%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

把ks.cfg文件放到ftp目录下,并把文件权限改为644

cp ks.cfg /var/ftp && chmod 644 /var/ftp/ks.cfg

3. 测试部署

virt-manager配置一台虚拟机,测试成功

posted @ 2022-07-01 13:36  liwl1991  阅读(486)  评论(0编辑  收藏  举报