linux-运维进阶-24 PXE+Kickstart无人值守安装系统

linux-运维进阶-24 PXE+Kickstart无人值守安装系统

概念解析

一、pxe介绍

PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址再用TFTP或MTFTP协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户?)基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导多种操作系统。

二、.kickstart介绍

许多系统管理员倾向于使用自动安装方法来安装RedHat企业Linux在他们的机器上。为了满足这个需要,RedHat创建了kickstart安装方法。使用kickstart,系统管理员可以创建一个包含所有在典型的安装过程中通常会被问到的问题的答案的文件。启动文件可以保存在单个服务器系统上,并在运行期间有个人计算机读取安装。这安装方法可以支持使用一个启动文件来安装RedHat企业Linux在多台机器上。kickstart为用户提供了一种自动化的安装方法。

Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在自动安装过程中出现要填写参数的情况,安装程序首先会去查找ks.cfg文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便会弹出对话框让安装者手工填写。所以,如果ks.cfg文件涵盖了安装过程中所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处下载ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启/关闭系统,并结束安装。

三、应用

刚入职的运维新手经常会被要求去做一些安装操作系统的工作。如果按照第1章讲解的用光盘镜像来安装操作系统,其效率会相当低下。本章将介绍可以实现无人值守安装服务的PXE+Kickstart服务程序,并带领大家动手安装部署PXE + TFTP + FTP + DHCP + Kickstart等服务程序,从而搭建出一套可批量安装Linux系统的无人值守安装系统。在学完本章内容之后,运维新手就可以避免枯燥乏味的重复性工作,大大提供系统安装的效率。

PXE+Kicstart 无人值守安装系统

主机名称 操作系统 IP地址
无人值守系统 CENTOS 7 ens33:192.168.141.132 ens37:192.168.10.10
客户端主机 未安装操作系统 -

客户端主机先不要开机,服务器Server增加一块网卡,设置为仅主机模式,客户机client一块网卡为仅主机模式,尚未安装系统的客户机内存至少大于等于2G,其CD/DVD里不用放置iso系统镜像,如下图:

配置Server服务器

直接关闭服务器上防火墙和selinux,省事儿

[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# 

设置服务器新添加的仅主机模式网卡为固定ip

[root@localhost ~]# nmcli connection add con-name ens37 ifname ens37 type ethernet autoconnect yes ipv4.method manual ipv4.addresses 192.168.10.10/24
连接“ens37”(4a690975-263e-4f5f-8ba9-d08fb16ff66d) 已成功添加。
[root@localhost ~]# systemctl restart network
[root@localhost ~]# ip add
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:98:66:4e brd ff:ff:ff:ff:ff:ff
    inet 192.168.141.132/24 brd 192.168.141.255 scope global noprefixroute dynamic ens33
       valid_lft 1797sec preferred_lft 1797sec
    inet6 fe80::5a82:cc9d:de3:b9f0/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: ens37:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:98:66:58 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.10/24 brd 192.168.10.255 scope global noprefixroute ens37
       valid_lft forever preferred_lft forever
    inet6 fe80::8df1:2a48:abf7:c67b/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@localhost ~]# 

可以看到网卡ens37的ip已经成功改为192.168.10.10/24了

配置DHCP服务

[root@localhost ~]# yum install dhcp -y
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf 

#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#
allow booting;
allow bootp;
ddns-update-style interim;
ignore client-updates;
subnet 192.168.10.0 netmask 255.255.255.0 {
        option subnet-mask      255.255.255.0;
        option domain-name-servers      192.168.10.10;
        range dynamic-bootp     192.168.10.100 192.168.10.200;
        default-lease-time      21600;
        max-lease-time          43200;
        next-server             192.168.10.10;
        filename                "pxelinux.0";
}

保存退出,重启dhcp服务
[root@localhost ~]# systemctl restart dhcpd

配置TFTP服务

[root@localhost ~]# yum install tftp-server xinetd -y
[root@localhost ~]# vim /etc/xinetd.d/tftp 
将第14行的
        disable                 = yes
改为:
        disable                 = no
即可。


保存退出,重启xinetd服务
[root@localhost ~]# systemctl restart xinetd
[root@localhost ~]# systemctl enable xinetd

配置syslinux服务程序

[root@localhost ~]# yum install syslinux -y

在安装好SYSLinux服务程序软件包后,/usr/share/syslinux目录中会出现很多引导文件。

首先需要把SYSLinux提供的引导文件复制到TFTP服务程序的默认目录中,也就是前文提到的文件pxelinux.0,这样客户端主机就能够顺利地获取到引导文件了。

另外在Centos 7系统光盘镜像中也有一些我们需要调取的引导文件。确认光盘镜像已经被挂载到/media/cdrom目录后,使用复制命令将光盘镜像中自带的一些引导文件也复制到TFTP服务程序的默认目录中。

[root@localhost ~]# cd /var/lib/tftpboot/
[root@localhost tftpboot]# cp /usr/share/syslinux/pxelinux.0 .
[root@localhost tftpboot]# mkdir -p /media/cdrom
[root@localhost tftpboot]# mount /dev/cdrom /media/cdrom/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost tftpboot]# cd /media/cdrom/images/pxeboot/
[root@localhost pxeboot]# ls
initrd.img  TRANS.TBL  vmlinuz
[root@localhost pxeboot]# cd -
/var/lib/tftpboot
[root@localhost tftpboot]# 
[root@localhost tftpboot]# cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} .
[root@localhost tftpboot]# cp /media/cdrom/isolinux/{vesamenu.c32,boot.msg} .

然后在TFTP服务程序的目录中新建pxelinux.cfg目录,虽然该目录的名字带有后缀,但依然也是目录,而非文件!将系统光盘中的开机选项菜单复制到该目录中,并命名为default。这个default文件就是开机时的选项菜单

[root@localhost tftpboot]# mkdir pxelinux.cfg
[root@localhost tftpboot]# cp /media/cdrom/isolinux/isolinux.cfg pxelinux.cfg/default
[root@localhost tftpboot]# 

默认安装系统会对安装介质进行检验,无法做到无人值守,所以修改菜单

[root@localhost tftpboot]# vi pxelinux.cfg/default
1行    default linux
64行   append initrd=initrd.img inst.stage2=ftp://192.168.10.10 ks=ftp://192.168.10.10/pub/ks.cfg quiet

配置vsftpd服务

光盘镜像是通过FTP协议传输的,因此要用到vsftpd服务程序

[root@localhost tftpboot]# cd 
[root@localhost ~]# yum install vsftpd -y
[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
[root@localhost ~]# 

在确认系统光盘镜像已经正常挂载到/media/cdrom目录后,把目录中的光盘镜像文件全部复制到vsftpd服务程序的工作目录中。并且添加防火墙策略和设置SELinux安全上下文

[root@localhost ~]# cp -r /media/cdrom/* /var/ftp/
[root@localhost ~]# setsebool -P ftpd_connect_all_unreserved=on

创建KickStart应答文件

Kickstart应答文件中包含了系统安装过程中需要使用的选项和参数信息,系统可以自动调取这个应答文件的内容,从而彻底实现了无人值守安装系统。

在root管理员的家目录中有一个名为anaconda-ks.cfg的文件,它就是应答文件。下面将这个文件复制到vsftpd服务程序的工作目录中(在开机选项菜单的配置文件中已经定义了该文件的获取路径,也就是vsftpd服务程序数据目录中的pub子目录中)。使用chmod命令设置该文件的权限,确保所有人都有可读的权限,以保证客户端主机可以顺利获取到应答文件及里面的内容

[root@localhost ~]# cp ~/anaconda-ks.cfg /var/ftp/pub/ks.cfg
[root@localhost ~]# chmod +r /var/ftp/pub/ks.cfg 
[root@localhost ~]# 

注意,既然应答文件ks.cfg 来自于Server的anaconda-ks.cfg文件,那么之后的客户机装好后root密码和Server的是一样的。

修改这个文件,root密码就不改了,就和Server用一样的吧

[root@localhost ~]# vi /var/ftp/pub/ks.cfg 
5行 url --url=ftp://192.168.10.10   //删除原本的cdrom,把镜像来源定位到Server上
30行 clearpart --all --initlabel    //意思是清空所有磁盘内容并初始化磁盘

如果觉得系统默认自带的应答文件参数较少,不能满足生产环境的需求,则可以通过Yum软件仓库来安装system-config-kickstart软件包。这是一款图形化的Kickstart应答文件生成工具,可以根据自己的需求生成自定义的应答文件,然后将生成的文件放到/var/ftp/pub目录中并将名字修改为ks.cfg即可。

开启一台没有安装系统的虚拟机(内存至少大于等于2G)

选择否

下图中敲完回车不要急,等~

可以看到自动安装已经开始了,咱们不用去动它,它自己会装好的,我们耐心等待即可

​ 它自动给root设置了密码,就是我们之前提到的,和Server一样的root密码。我们不用进行任何操作,等,等蛮久的,等吧~

终于等到它完成了,点击重启

重启后,用root以及Server的root密码来登录客户机:

可以看到登录成功!

Server关机后保存好快照,以后咱们装新的虚拟机可以找开启Server后关掉防火墙和selinux后,让它自动安装系统。

本篇到此结束。

你可能感兴趣的:(Linux-运维进阶,PXE,linux,Kickstart,无人值守安装,自动装系统)