使用 PXE+Kickstart 实现无人值守批量部署系统
一、废话两句
在云数据中心,一次几十台甚至几百台服务器上线,系统安装将变得非常繁琐,系统安装好了后还会涉及很多配置,如果一台台来安装的话工作量非常大。(虽然有加班费,开个玩笑)
为了解决这个问题,我们需要实现无人值守批量部署系统。
简单看一下拓扑图:
1. 什么是pxe?
简单来说:pxe主要是引导作用,具体的详细信息这里就不多说了,详情百度即可。
pxe引导流程:
2. 什么是kickstart?
简单两句就是:kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数;
比如:我们安装系统的时候需要分区、设置时区、设置root密码、安装后执行的脚本等等,这些操作都记录下来并生成一个名为ks.cfg的文件。
pxe+kickstart 无人值守安装操作系统完整过程:
二、环境准备
操作系统:centos 7.4 (最小化安装)
实验平台:vmware workstation 14
网络模式:nat模式
服务器ip地址:192.168.115.21
防火墙:关闭
selinux=disable
三、准备工作
如果当初已经是图形化安装了,则不需要该步骤。
生成ks.cfg 文件需要system-config-kickstart 工具,而此工具依赖于x windows,所以我们需要安装x windows 和desktop 并重启系统,操作如下:
i. 挂载光盘:
[root@localhost ~]# mkdir /mnt/cdrom [root@localhost ~]# mount /dev/cdrom /mnt/cdrom
ii. 配置本地yum源:
[root@localhost ~]# cat /etc/yum.repos.d/dvd.repo ------------------------------------------------------ [development] # 名称必须为 “development”,否则到后面kickstart配置会出现软件包选择出现没有软件包信息 name=redhat baseurl=file:///mnt/cdrom gpgcheck=0
iii. 安装图形化:
[root@localhost ~]# yum groupinstall "server with gui" -y [root@localhost ~]# systemctl set-default graphical.target // 设置默认启动到图形界面 [root@localhost ~]# reboot // 重启机器
四、安装需要服务
1. 配置dhcp
i. 安装dhcp服务
[root@localhost ~]# yum install dhcp -y
ii. 修改/etc/dhcp/dhcpd.conf 配置文件
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf ------------------------- 配置如下 ------------------------------- subnet 192.168.115.0 netmask 255.255.255.0 { //所在网段 range 192.168.115.100 192.168.115.199; //分配ip地址范围 option subnet-mask 255.255.255.0; //给客户端设置子网掩码(netmask) default-lease-time 21600; //设置默认的ip租期时间 max-lease-time 43200; //设置最大的ip租期时间 next-server 192.168.115.21; //tfp服务端ip地址 filename "/pxelinux.0"; //网络引导程序 }
iii. 启动dhcp服务
[root@localhost ~]# systemctl start dhcpd [root@localhost ~]# systemctl enable dhcpd
iv. 测试dhcp是否成功
新建一个虚拟机进行测试,如下图可以看出已经成功获取ip地址和其他信息了。
2. 配置tfp
i. 安装tfp、xinetd
[root@localhost ~]# yum install tftp-server xinetd -y
ii. 修改配置文件
[root@localhost ~]# vim /etc/xinetd.d/tftp -------------- 省略配置信息,看下图 ------------- 将 disable 设置为 no
iii. 启动服务
因为 tftp 服务是挂载在超级进程 xinetd 下的,所以通过启动 xinetd 来启动 tftp 服务。
[root@localhost ~]# systemctl start xinetd [root@localhost ~]# systemctl enable xinetd
iv. 检查服务是否启动成功
[root@localhost ~]# netstat -ntulp | grep 69 udp 0 0 0.0.0.0:69 0.0.0.0:* 2817/xinetd
3. 安装syslinux
i. 安装syslinux只是为了要 pxelinux.0 引导加载程序,没有别的用意。
[root@localhost ~]# yum install selinux -y
ii. 复制pxelinux.0 文件至/var/lib/tftpboot/ 文件夹中
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
iii. 拷贝光盘里的配置文件
[root@localhost ~]# cp /mnt/cdrom/isolinux/* /var/lib/tftpboot/
iv. 验证改步骤是否成功
将新建的测试虚拟机重启,就可以看到该界面了。
4. 配置http
i. 安装http
系统的安装方式可以选择http、ftp、 nfs,我们这里介绍http方式的安装,其他两种方式的安装,大家可以自行百度。
[root@localhost ~]# yum install httpd -y
ii. 启动http
[root@localhost ~]# systemctl start httpd [root@localhost ~]# systemctl enable httpd
iii. 复制光盘全部内容至http 的根目录/var/www/html/pub 下
[root@localhost ~]# mkdir /var/www/html/pub [root@localhost ~]# cp -r /mnt/cdrom/ /var/www/html/pub
iv. 测试改步骤是否成功
5. 配置kickstart
i. 安装kickstart
[root@localhost ~]# yum install system-config-kickstart -y
ii. 在桌面环境下配置kickstart,生成ks.cfg 文件
[root@localhost ~]# system-config-kickstart
a. 设置语言,键盘,时区,root密码,安装完毕后重启等。
b. 设置安装方式,这篇文章介绍的是http方式的安装。
c. 安装mbr
d. 设置分区
e. 配置网络
f. 认证配置
g. selinux 和防火墙配置
h. 图形环境配置
i. 软件包安装选择
注:如果你的软件列表没有信息,解决该问题看后面部分,如下图:
j. 安装后脚本
k. 保存导出配置文件
iii. 复制到http下的ks目录
[root@localhost ~]# mkdir /var/www/html/ks [root@localhost ~]# cp ks.cfg /var/www/html/ks/
iv. 验证改步骤
6. 修改default
i. 创建配置文件夹
[root@localhost ~]# cd /var/lib/tftpboot/ [root@localhost tftpboot]# mkdir pxelinux.cfg
ii. 复制配置文件
[root@localhost ~]# cp /var/lib/tftpboot/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default [root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default ----------------------- 修改配置如下 -------------------------- label linux menu label ^install pxe+kickstart_redhat7 kernel vmlinuz append initrd=initrd.img ks=http://192.168.115.21/ks/ks.cfg ksdevice=eth0 net.ifnames=0 biosdevname=0
参数解释:
append initrd=initrd.img ks // 存放ks配置文件的服务器地址和路径,通过该路径找到对应的ks.cfg文件来引导系统安装 ksdevice=eth0 // 指定该网卡进行ks的数据交互(可忽略) net.ifnames=0 biosdevname=0 // 修改内核参数,让网卡命名变为ethxx
iii. 开机验证(需要手动选择安装)
iv. 全自动化安装,无需手动选择安装
[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default -------------------------------------------------------------- default linux # 在配置文件第一行找到default,加上label的名称即可。 label linux menu label ^install pxe+kickstart_redhat7 kernel vmlinuz append initrd=initrd.img ks=http://192.168.115.21/ks/ks.cfg ksdevice=eth0 net.ifnames=0 biosdevname=0
v. 安装好后验证脚本信息
到此就完成了无人值守批量部署系统,收工下班。
五、你可能会出现的问题
1. 配置kickstart时,软件包选择出现没有软件包信息,如下图:
解决办法:
检查yum源配置是否为: [development] ,配置好后,重新打开kickstart配置窗口即可。如图:
2. 配置好后,进行自动化部署的时候出现如下报错信息,如下图:
"/sbin/dmsquash-live-root: line 273: write error: no space left on device"
解决办法:
检查虚拟机或服务器的内存大小,redhat7.3以上的版本进行kickstart安装需要分配至少2gb的内存。
推荐阅读
-
使用 PXE+Kickstart 实现无人值守批量部署系统
-
荐 Linux--网络服务--PXE高效批量网络装机,实验+理论详解(部署PXE远程安装服务,实现Kickstart无人值守安装)
-
VMware实现PXE+kickstart无人值守安装Centos7系统的详细过程
-
使用 PXE+Kickstart 实现无人值守批量部署系统
-
荐 Linux网络系列--PXE高效批量网络装机(使用PXE远程装机、实现无人值守自动装机)
-
荐 Linux--网络服务--PXE高效批量网络装机,实验+理论详解(部署PXE远程安装服务,实现Kickstart无人值守安装)
-
Centos 7 使用PXE+Kickstart实现无人值守安装操作系统
-
Linux——PXE+Kickstart无人值守批量安装Centos7.4操作系统
-
VMware实现PXE+kickstart无人值守安装Centos7系统的详细过程
-
CentOS 7 PXE+Kickstart批量无人值守部署Linux系统