Linux系统下手把手完成无人值守安装服务

刚入职的运维新手常常会被要求去作一些安装操做系统的工做,若是按照用镜像光盘安装操做系统,效率会至关低下。那么如何提高效率,搭建出一套能够批量安装Linux系统的无人值守的安装系统?linux

PXE+TFTP+FTP+DHCP+Kickstart服务能够搭建出一个无人值守安装系统。这种无人值守安装系统能够自动的为数十台服务器安装系统,将运维人员从重复性的工做中解救出来,大大提高了系统安装的效率。vim

 

如上图所示,是无人值守安装系统的工做流程。服务器

PXE(Preboot eXecute Environment,预启动执行环境)是由 Intel 公司开发的技术,可让计算机经过网络来启动操做系统(前提是计算机上安装的网卡支持 PXE 技术),主要用于在无人值守安装系统中引导客户端主机安装 Linux 操做系统。Kickstart 是一种无人值守的安装方式,其工做原理是预先把本来须要运维人员手工填写的参数保存成一个ks.cfg 文件,当安装过程当中须要填写参数时则自动匹配 Kickstart 生成的文件。因此只要Kickstart 文件包含了安装过程当中须要人工填写的全部参数,那么从理论上来说彻底不须要运维人员的干预,就能够自动完成安装工做。网络

固然须要使用 TFTP 协议帮助客户端获取引导及驱动文件。vsftpd 服务程序用于将完整的系统安装镜像经过网络传输给客户端。固然,只要能将系统安装镜像成功传输给客户端便可,所以也可使用 httpd 来替代 vsftpd 服务程序。运维

首先,配置DHCP服务程序。DHCP 服务程序用于为客户端主机分配可用的 IP 地址,并且这是服务器与客户端主机进行文件传输的基础,所以咱们先行配置 DHCP 服务程序。dom

[root@linuxprobe linuxprobe]# yum install dhcpsocket

[root@linuxprobe ~]# vim /etc/dhcp/dhcpd.conf操作系统

allow booting;.net

allow bootp;3d

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";

}

该操做的目的是为了容许BOOTP引导程序协议,旨在让局域网内暂时没有操做系统的主机也能获取静态 IP地址;在配置文件的最下面加载了引导驱动文件 pxelinux.0 ,其目的是让客户端主机获取到 IP 地址后主动获取引导驱动文件,自行进入下一步的安装过程。具体解释见《Linux就该这么学》。

第二步,配置TFTP服务程序。

vsftpd 是一款功能丰富的文件传输服务程序,容许用户以匿名开放模式、本地用户模式、虚拟用户模式来进行访问认证。可是,当前的客户端主机尚未安装操做系统,该如何进行登陆认证呢?而 TFTP 做为一种基于 UDP 协议的简单文件传输协议,不须要进行用户认证便可获取到所需的文件资源。所以接下来配置 TFTP 服务程序,为客户端主机提供引导及驱动文件。当客户端主机有了基本的驱动程序以后,再经过 vsftpd 服务程序将完整的光盘镜像文件传输过去。

[root@linuxprobe ~]# yum install tftp-server

[root@linuxprobe ~.d]# vim /etc/xinetd.d/tftp

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

}

第三步,配置SYSLinux服务程序。SYSLinux 是一个用于提供引导加载的服务程序。与其说 SYSLinux 是一个服务程序,不如说更须要里面的引导文件,在安装好 SYSLinux 服务程序软件包后,/usr/share/syslinux 目录中会出现不少引导文件。

[root@linuxprobe ~]# yum install syslinux

[root@linuxprobe ~]# cd /var/lib/tftpboot

[root@linuxprobe tftpboot]# cp /usr/share/syslinux/pxelinux.0 .

[root@linuxprobe tftpboot]# cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} .

[root@linuxprobe tftpboot]# cp /media/cdrom/isolinux/{vesamenu.c32,boot.msg} .

首先须要把 SYSLinux 提供的引导文件复制到 TFTP 服务程序的默认目录中,也就是前文提到的文件 pxelinux.0,这样客户端主机就可以顺利地获取到引导文件了。另外在 RHEL 7 系统光盘镜像中也有一些咱们须要调取的引导文件。确认光盘镜像已经被挂载到/media/cdrom 目录后,使用复制命令将光盘镜像中自带的一些引导文件也复制到 TFTP 服务程序的默认目录中。

[root@linuxprobe tftpboot]# mkdir pxelinux.cfg

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

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

第四步,配置vdftpd服务程序。

[root@linuxprobe ~]# yum install vsftpd

在确认系统光盘镜像已经正常挂载到/media/cdrom 目录后,把目录中的光盘镜像文件所有复制到 vsftpd 服务程序的工做目录中。

[root@linuxprobe ~]# cp -r /media/cdrom/* /var/ftp

最后,建立KickStart应答文件。

毕竟,咱们使用 PXE + Kickstart 部署的是一套“无人值守安装系统服务”,而不是“无人值守传输系统光盘镜像服务”,所以还须要让客户端主机可以一边获取光盘镜像,还可以一边自动帮咱们填写好安装过程当中出现的选项。

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

[root@linuxprobe ~]# cp ~/anaconda-ks.cfg /var/ftp/pub/ks.cfg

[root@linuxprobe ~]# chmod +r /var/ftp/pub/ks.cfg

到目前为止,咱们的服务基本部署完毕,集体详细解释过程参见《Linux就该这么学》,但愿本文对刚入职的运维人员有必定的帮助。