本文首发于我的个人网站: https://hewanyue.com/
本文作者: Hechao
本文链接: https://hewanyue.com/blog/部署自动化安装及cobber-Http-TFTP-PXE-kickstart无人职守批量安装精简版Linux系统/
为了简化每台服务器的系统的装机过程和统一服务器配置,可以采用一键自动化安装系统的方式,实现新机器接上网线开机便可批量安装相同配置的系统,便于以后统一管理。
想要实现自动化安装系统,
1.搭建dhcp服务器,给新机器网卡分配IP地址,并引导机器去搭建好的tftp站点下载引导程序及内核文件;
2.搭建tftp服务器,提供引导程序及内核文件;复制内核文件至服务器目录;
3.搭建http服务器,提供应答kickstart文件、系统安装包程序的下载;挂载光盘或拷贝安装包至目录文件;
4生成ks应答kickstart文件(放置于ftp服务器中);
5.复制光盘中的/cdrom/isolinux/isolinux.cfg文件至目录pxelinux.cfg/,改名为pxelinux.cfg/fault文件,即为安装菜单(之后目录pxelinux.cfg/整体放入tftp服务器中)。
演示环境:CentOS7 Kernel Version: 3.10.0-957.el7.x86_64 本机IP:192.168.32.7
1. 配置DHCP服务器
1.首先安装dhcp服务。yum install dhcp
2.启动dhcp服务。但直接启动,会报错,如下图所示,须先修改dhcpd的配置文件。
打开/etc/dhcp/dhcpd.conf配置文件后发现,配置文件是空的,难怪报错,有一行“see /usr/share/doc/dhcpd.conf.example”,原来要我们参考这个模版来自己写配置文件。 于是先复制模版至原配置文件目录。
选择覆盖,再打开配置文件。
修改⑴网段⑵租期时长⑶网关⑷DNS⑸DNS域后缀⑹提供资源下载站点IP⑺需要下载的引导文件
此时重启DHCP服务成功,查看DHCP服务状态,已经启动(状态信息的提示,是指另一块网卡没有被DHCP服务器网段分配地址,分配一个就足够了,可以无视)。
2.搭建tftp服务器
1.首先安装tftp服务端yum install tftp-server -y
2.生成pxelinux.0引导程序,并放入tftp服务器
⑴先确定引导程序所在的安装包;
yum search pxelinux
⑵安装syslinux.x86_64;
yum install syslinux.x86_64
⑶找到引导程序pxelinux.0的所在路径;
rpm -ql syslinux.x86_64|grep pxelinux.0
⑷将引导程序pxelinux.0及菜单背景模版文件menu.c32拷贝到服务器
cp /usr/share/syslinux/pxelinux.0 /usr/share/syslinux/menu.c32 /var/lib/tftpboot/
3.将准备好的内核文件和initrd.img文件拷贝到服务器
cp /cdrom6/isolinux/vmlinuz /cdrom6/isolinux/initrd.img /var/lib/tftpboot/6/
cp /cdrom7/isolinux/vmlinuz /cdrom7/isolinux/initrd.img /var/lib/tftpboot/7/
最终效果如下:
3.搭建http服务器
1.首先安装httpd服务端yum install httpd -y
2.启动httpd服务systemctl start httpd
3.查看httpd服务状态是否启动systemctl status httpd
4.创建安装包文件目录mkdir -pv /var/www/html/CentOS/{6,7}/os/x86_64/
5.挂载光盘安装包至目录或拷贝安装文件至目录
mount /dev/sr0 /var/www/html/CentOS/7/os/x86_64/
mount /dev/sr1 /var/www/html/CentOS/6/os/x86_64/
效果图如下:
6.挂载光盘安装包至目录或拷贝安装文件至目录
4.生成kickstart应答文件
ks文件的生成一般有两种方法:
①:之前手动安装后系统自动生成的的记录文件/root/anaconda-ks.cfg文件是可以直接复制过来修改使用的。
②:用kickstart工具生成。
我们这里采用第二种。执行system-config-kickstart
命令。(这是一个在图形化界面操作的选项命令,如果用的是Xshell工具连接虚拟机,需要开启Xmanager - Passive,来转发图形化界面)
第一步,选择语言,键盘布局,时区,设置root口令(是否加密存储),安装完成后重启,命令行模式安装;
第二步,选择选择系统安装方式,通过HTTP服务站点安装,输入已经搭好的服务器IP和安装包路径;
第三步,选择安装grub引导安装程序,(先不对grub进行加密了,据说会有加密方式不符的话会有报错),加内核参数net.innames=0实现不更改网卡名称;
第四步,清除原有分区,清除分区标签,设置新分区表;
第五步,设置网卡名eth0,及获取IP方式为DHCP;
第六步,默认关闭SELINUX策略和防火墙;
第七步,选择需要的系统服务;
第八步,附加装机前后脚本;
第九步,将ks应答文件复制到http服务器
mkdir -p /var/www/html/ksdir/;cp ~/centos7-ks.cfg /var/www/html/ksdir/
(CentOS6的KS同样方式生成)
cp ~/centos6-ks.cfg /var/www/html/ksdir/
5.创建安装菜单
菜单文件的一般有两种方法:
①:复制修改光盘中的菜单文件/cdrom/isolinux/lisolinux.cfg文件是可以直接复制过来修改使用的。
①:VIM手工输入。
default menu.c32
timeout 600
menu title Auto Install CentOS
label linux 7
mennu label Install CentOS^7
menu default
kernel 7/vmlinuz
append initrd=7/initrd.img ks=http://192.168.32.7/ksdir/centos7-ks.cfg
label linux 6
mennu label Install CentOS^6
kernel 6/vmlinuz
append initrd=6/initrd.img ks=http://192.168.32.7/ksdir/centos6-ks.cfg
label linux local
mennu label Boot from ^local drive
localboot Oxffff
再将菜单文件存入tftp服务器中 /linux.cfg目录 下 重命名为fault文件。tftp服务器最终目录机构如下图所示:
至此,基于PXE网卡,无人职守批量安装CentOS系统的配置就完成了。