1、无人值守系统
本书在第1章讲解了使用光盘镜像来安装Linux系统的方法,坦白讲,该方法适用于只安装少量Linux系统的情况。如果生产环境中有数百台服务器都需要安装系统,这种方式就不合时宜了。这时,我们就需要使用PXE + TFTP +FTP + DHCP + Kickstart服务搭建出一个无人值守安装系统。这种无人值守安装系统可以自动地为数十台服务器安装系统,这一方面将运维人员从重复性的工作中解救出来,也大大提升了系统安装的效率。
无人值守安装系统的工作流程如图所示。

无人值守安装系统的工作流程
PXE(Preboot eXecute Environment,预启动执行环境)是由Intel公司开发的技术,可以让计算机通过网络来启动操作系统(前提是计算机上安装的网卡支持PXE技术),主要用于在无人值守安装系统中引导客户端主机安装Linux操作系统。Kickstart是一种无人值守的安装方式,其工作原理是预先把原本需要运维人员手工填写的参数保存成一个ks.cfg文件,当安装过程中需要填写参数时则自动匹配Kickstart生成的文件。所以只要Kickstart文件包含了安装过程中需要人工填写的所有参数,那么从理论上来讲完全不需要运维人员的干预,就可以自动完成安装工作。TFTP、FTP以及DHCP服务程序的配置与部署已经在第11章和第14章进行了详细讲解,这里不再赘述。
由于当前的客户端主机并没有完整的操作系统,也就不能完成FTP协议的验证了,所以需要使用TFTP协议帮助客户端获取引导及驱动文件。vsftpd服务程序用于将完整的系统安装镜像通过网络传输给客户端。当然,只要能将系统安装镜像成功传输给客户端即可,因此也可以使用httpd来替代vsftpd服务程序。

2、部署相关服务程序
2.1 配置DHCP服务程序
DHCP服务程序用于为客户端主机分配可用的IP地址,而且这是服务器与客户端主机进行文件传输的基础,因此我们先行配置DHCP服务程序。首先按照表19-1为无人值守系统设置IP地址,然后按照图19-2和图19-3在虚拟机的虚拟网络编辑器中关闭自身的DHCP服务。
2.1.1 安装DHCP服务

yum install dhcp

2.1.2、配置DHCP服务
允许了BOOTP引导程序协议,旨在让局域网内暂时没有操作系统的主机也能获取静态IP地址;在配置文件的最下面加载了引导驱动文件pxelinux.0(这个文件会在下面的步骤中创建),其目的是让客户端主机获取到IP地址后主动获取引导驱动文件,自行进入下一步的安装过程。

vim /etc/dhcp/dhcpd.conf

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服务程序的参数都填写正确后,重新启动该服务程序,并将其添加到开机启动项中。这样在设备下一次重启之后,在无须人工干预的情况下,自动为客户端主机安装系统。

systemctl restart dhcpdsystemctl enable dhcpd

2.1.3、配置TFTP服务程序
我们曾经在第11章中学习过vsftpd服务与TFTP服务。vsftpd是一款功能丰富的文件传输服务程序,允许用户以匿名开放模式、本地用户模式、虚拟用户模式来进行访问认证。但是,当前的客户端主机还没有安装操作系统,该如何进行登录认证呢?而TFTP作为一种基于UDP协议的简单文件传输协议,不需要进行用户认证即可获取到所需的文件资源。因此接下来配置TFTP服务程序,为客户端主机提供引导及驱动文件。当客户端主机有了基本的驱动程序之后,再通过vsftpd服务程序将完整的光盘镜像文件传输过去。
yum install tftp-server
TFTP是一种非常精简的文件传输服务程序,它的运行和关闭是由xinetd网络守护进程服务来管理的。xinetd服务程序会同时监听系统的多个端口,然后根据用户请求的端口号调取相应的服务程序来响应用户的请求。需要开启TFTP服务程序,只需在xinetd服务程序的配置文件中把disable参数改成no就可以了。保存配置文件并退出,然后重启xinetd服务程序,并将其加入到开机启动项中(在RHEL 7系统中,已经默认启用了xinetd服务程序,因此在将其添加到开机启动项中的时候没有输出信息属于正常情况)。
vim /etc/xinetd.d/tftp

{socket_type             = dgramprotocol                = udpwait                    = yesuser                    = rootserver                  = /usr/sbin/in.tftpdserver_args             = -s /var/lib/tftpbootdisable                 = noper_source              = 11cps                     = 100 2flags                   = IPv4
}

这里发现没有xinetd服务,使用yum安装xinetd服务

yum -y install xinetd*systemctl restart xinetdsystemctl enable xinetd

TFTP服务程序默认使用的是UDP协议,占用的端口号为69,所以在生产环境中还需要在firewalld防火墙管理工具中写入使其永久生效的允许策略,以便让客户端主机顺利获取到引导文件。

firewall-cmd --permanent --add-port=69/udpfirewall-cmd --reload

2.2配置SYSLinux服务程序

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

yum install syslinux

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

cd /var/lib/tftpboot
cp /usr/share/syslinux/pxelinux.0 .
cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} .
cp /media/cdrom/isolinux/{vesamenu.c32,boot.msg} .

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


Linux系统的引导菜单界面

mkdir pxelinux.cfg
cp /media/cdrom/isolinux/isolinux.cfg pxelinux.cfg/default

默认的开机菜单中有两个选项,要么是安装系统,要么是对安装介质进行检验。既然我们已经确定采用无人值守的方式安装系统,还需要为每台主机手动选择相应的选项,未免与我们的主旨(无人值守安装)相悖。现在我们编辑这个default文件,把第1行的default参数修改为linux,这样系统在开机时就会默认执行那个名称为linux的选项了。对应的linux选项大约在64行,我们将默认的光盘镜像安装方式修改成FTP文件传输方式,并指定好光盘镜像的获取网址以及Kickstart应答文件的获取路径:

vim pxelinux.cfg/default

efault linux
timeout 600

display boot.msg# Clear the screen when exiting the menu, instead of leaving the menu displayed.
# For vesamenu, this means the graphical background is still displayed without
# the menu itself for as long as the screen remains in graphics mode.
menu clear
menu background splash.png
menu title CentOS 7
menu vshift 8
menu rows 18
menu margin 8
#menu hidden
menu helpmsgrow 15
menu tabmsgrow 13# Border Area
menu color border * #00000000 #00000000 none# Selected item
menu color sel 0 #ffffffff #00000000 none# Title bar
menu color title 0 #ff7ba3d0 #00000000 none# Press [Tab] message
menu color tabmsg 0 #ff3a6496 #00000000 none# Unselected menu item
menu color unsel 0 #84b8ffff #00000000 none# Selected hotkey
menu color hotsel 0 #84b8ffff #00000000 none# Unselected hotkey
menu color hotkey 0 #ffffffff #00000000 none# Help text
menu color help 0 #ffffffff #00000000 none# A scrollbar of some type? Not sure.
menu color scrollbar 0 #ffffffff #ff355594 none# Timeout msg
menu color timeout 0 #ffffffff #00000000 none
menu color timeout_msg 0 #ffffffff #00000000 none# Command prompt text
menu color cmdmark 0 #84b8ffff #00000000 none
menu color cmdline 0 #ffffffff #00000000 none
# Do not display the actual menu unless the user presses a key. All that is displayed is a timeout message.menu tabmsg Press Tab for full configuration options on menu items.menu separator # insert an empty line
menu separator # insert an empty linelabel linuxmenu label ^Install CentOS 7kernel vmlinuzappend initrd=initrd.img inst.stage2=ftp://192.168.10.10 ks=ftp://192.168.10.10/pub/ks.cfg quiet

2.3、配置VSFtpd服务程序
在我们这套无人值守安装系统的服务中,光盘镜像是通过FTP协议传输的,因此势必要用到vsftpd服务程序。当然,也可以使用httpd服务程序来提供Web网站访问的方式,只要能确保将光盘镜像顺利传输给客户端主机即可。如果打算使用Web网站服务来提供光盘镜像,一定记得将上面配置文件中的光盘镜像获取网址和Kickstart应答文件获取网址修改一下。

yum install vsftpd

在配置文件修改正确之后,一定将相应的服务程序添加到开机启动项中,这样无论是在生产环境中还是在红帽认证考试中,都可以在设备重启之后依然能提供相应的服务。

systemctl restart vsftpd
systemctl enable vsftpd

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

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

在firewalld防火墙管理工具中写入使FTP协议永久生效的允许策略,然后在SELinux中放行FTP传输:

2.4、创建KickStart应答文件

毕竟,我们使用PXE + Kickstart部署的是一套“无人值守安装系统服务”,而不是“无人值守传输系统光盘镜像服务”,因此还需要让客户端主机能够一边获取光盘镜像,还能够一边自动帮我们填写好安装过程中出现的选项。简单来说,如果生产环境中有100台服务器,它们需要安装相同的系统环境,那么在安装过程中单击的按钮和填写的信息也应该都是相同的。那么,为什么不创建一个类似于备忘录的需求清单呢?这样,在无人值守安装系统时,可以从这个需求清单中找到相应的选项值,从而免去了手动输入之苦,更重要的是,也彻底解放了人的干预,彻底实现无人值守自动安装系统,而不是单纯地传输系统光盘镜像。

有了上文做铺垫,相信大家现在应该可以猜到Kickstart其实并不是一个服务程序,而是一个应答文件了。是的!Kickstart应答文件中包含了系统安装过程中需要使用的选项和参数信息,系统可以自动调取这个应答文件的内容,从而彻底实现了无人值守安装系统。那么,既然这个文件如此重要,该去哪里找呢?其实在root管理员的家目录中有一个名为anaconda-ks.cfg的文件,它就是应答文件。下面将这个文件复制到vsftpd服务程序的工作目录中(在开机选项菜单的配置文件中已经定义了该文件的获取路径,也就是vsftpd服务程序数据目录中的pub子目录中)。使用chmod命令设置该文件的权限,确保所有人都有可读的权限,以保证客户端主机可以顺利获取到应答文件及里面的内容:

 cp ~/anaconda-ks.cfg /var/ftp/pub/ks.cfg
chmod +r /var/ftp/pub/ks.cfg

首先把第6行的光盘镜像安装方式修改成FTP协议,仔细填写好FTP服务器的IP地址,并用本地浏览器尝试打开下检查有没有报错。然后把第32行的时区修改成上海(Asia/Shanghai),最后再把40行的磁盘选项设置为清空所有磁盘内容并初始化磁盘:
vim /var/ftp/pub/ks.cfg

  • #version=DEVEL
    # System authorization information
    auth --useshadow --enablemd5
    # Install OS instead of upgrade
    install
    # Use CDROM installation media
    #cdrom
    url --url=ftp://192.168.10.10
    # Use graphical install
    graphical
    # Firewall configuration
    firewall --enabled
    firstboot --disable
    ignoredisk --only-use=sda
    # Keyboard layouts
    # old format: keyboard us
    # new format:
    keyboard --vckeymap=us --xlayouts=‘us’
    # System language
    lang en_US.UTF-8

        # Network informationnetwork  --bootproto=dhcp --device=link --activatenetwork  --hostname=localhost.localdomain# Reboot after installationreboot# Root passwordrootpw --iscrypted $1$otPXQhNM$2Q1VB9CwkhYGk8I.MoJ4k.# System servicesservices --enabled="chronyd"# System timezonetimezone Asia/Shanghai --isUtc# X Window System configuration informationxconfig  --startxonboot# System bootloader configurationbootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda# Clear the Master Boot Recordzerombr# Partition clearing informationclearpart --all --initlabel# Disk partitioning informationpart swap --fstype="swap" --size=2049part /boot --fstype="xfs" --size=300part / --fstype="xfs" --size=1021650%post/usr/sbin/adduser lw/usr/sbin/usermod -p '$1$otPXQhNM$2Q1VB9CwkhYGk8I.MoJ4k.' lw/usr/bin/chfn -f "lw" lwmv /etc/rc.d/rc.local /etc/rc.d/rc.local.00echo '#!/bin/bash' > /etc/rc.d/rc.localln -s ../rc.local /etc/rc.d/rc5.d/S99rclocalchmod 755 /etc/rc.d/rc.localecho 'mkdir -p /var/log/vmware' >> /etc/rc.d/rc.localecho 'exec 1> /var/log/vmware/rc.local.log' >> /etc/rc.d/rc.localecho 'exec 2>&1' >> /etc/rc.d/rc.localecho 'set -x' >> /etc/rc.d/rc.localecho 'echo Installing Open VM Tools' >> /etc/rc.d/rc.localecho 'set -x' >> /etc/rc.d/rc.localecho '/bin/eject sr0 || /bin/true' >> /etc/rc.d/rc.localecho '/bin/eject sr1 || /bin/true' >> /etc/rc.d/rc.localecho '/bin/vmware-rpctool' \'guest.upgrader_send_cmd_line_args --default\' >>
    /etc/rc.d/rc.localecho '/bin/vmware-rpctool' \'upgrader.setGuestFileRoot /tmp\' >> /etc/rc.d/rc.localecho '/bin/vmware-rpctool' \'toolinstall.installerActive 1\' >> /etc/rc.d/rc.localecho '/bin/vmware-rpctool' \'toolinstall.installerActive 100\' >> /etc/rc.d/rc.localecho 'rm -f /etc/rc.d/rc.local' >> /etc/rc.d/rc.localecho 'rm -f /etc/rc.d/rc5.d/S99rclocal' >> /etc/rc.d/rc.localecho 'mv /etc/rc.d/rc.local.00 /etc/rc.d/rc.local' >> /etc/rc.d/rc.local/bin/echo done%end%packages@base@core@desktop-debugging@dial-up@directory-client@fonts@gnome-desktop@guest-desktop-agents@input-methods@internet-browser@java-platform@multimedia@network-file-system-client@print-client@x11binutilschronyftpgcckernel-develkexec-toolsmakeopen-vm-toolspatchpython%end%addon com_redhat_kdump --enable --reserve-mb='auto'%end
    

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

这里有一个小坑,就是如果不自定义的话,默认配置就是你这台服务器端的配置,自动化安装的时候如磁盘空间这种要和你的服务器端大小一致,cpu和内存可以不一致,我在测试的时候就遇到这个问题。

就可以使用PXE + Kickstart无人值守安装系统了

使用PXE+Kickstart构建无人值守系统安装服务相关推荐

  1. linux系统批量装机,PXE+Kickstart实现无人值守批量安装Linux

    PXE+Kickstart实现无人值守批量安装Linux 实验准备:主机myrhel2作为服务器端,新建一个没有安装操作系统的虚拟主机,而且其与服务器端在同一个网段 安装的条件: 服务器端: 支持TF ...

  2. PXE+Kickstart实现无人值守批量安装Linux

    PXE+Kickstart实现无人值守批量安装Linux 一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的 ...

  3. pxe+kickstart实现无人值守网络安装rhel5.4

    前言:系统的装我们有很多种方式,光盘.硬盘.ftp.http等,而对于拥有多台主机的实验环境而言,单一的通过光盘等来手动显然已经无法满足需求,现在我们就来了解一下通过pxe/kickstart 实现通 ...

  4. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装

    作者:JackTian 微信公众号:杰哥的IT之旅(Jake_Internet) 1.什么是 PXE? 严格来说,PXE 并不是一种安装方式,而是一种引导的方式.进行 PXE 安装的必要条件是要安装的 ...

  5. PXE+kickstart实现无人值守安装 CentOS 6.5

    一.PXE 介绍 PXE(Preboot Execution Environment ,预启动执行环境是由 Intel 公司开发的技术,工作于Client/Server的网络模式,支持工作站通过网络从 ...

  6. Pxe+Kickstart批量网络安装操作系统

    Pxe+Kickstart 实现无人值守批量网络安装操作系统 说明: 当批量给主机安装操作系统时,我们不可能用传统的方式--用光盘.U盘等,一台一台逐个安装,这样一来,费时又力,对于批量部署主机时,效 ...

  7. PXE+KickStart自动化安装Linux系统

     PXE+kickstart模式自动安装系统  PXE介绍 预启动执行环境(Preboot eXecution Environment,PXE)也被称为预执行环境,提供了一种使用网络接口(Netw ...

  8. pxe安装linux后命令不可用,CentOS7下的PXE无人值守系统安装(亲测成功)

    CentOS7下的PXE无人值守系统安装 为了满足同时安装上百台linux,而且不需要人工干预.这就需要PXE来通过网线自动安装linux 1.搭建yum源来下载必要的工具,yum源的配置见点击打开链 ...

  9. 用Kickstart批量安装Linux系统、Kickstart安装,linux批量安装;Linux的Kickstart的 无人值守安装;linux pxe自动安装linux系统...

    用Kickstart批量安装Linux|Kickstart,批量安装:Linux的Kickstart的 无人值守安装:linux pxe自动安装linux系统: KickStart + DHCP + ...

最新文章

  1. html按钮坐标,html-单选按钮位置CSS
  2. 转载一篇《Redis源码研究—哈希表》重点是如何重新哈希
  3. C#中Lock的秘密
  4. Replace Temp with Query(以查询取代临时变量)
  5. 磁卡门锁怎么配卡_样式多的铜工艺品怎么设计请查看_江西南昌皇巢|铜门||别墅铜门|...
  6. python的内建函数built-in functions
  7. 使用Elasticsearch,Kafka和Cassandra构建流式数据中心
  8. 1块钱,能买来财富自由吗?
  9. 【数据库系统原理】数据库设计
  10. iic调试软件上时钟芯片测试,时钟芯片的测试方法和系统 Clock chip testing methods and systems...
  11. 小程序block标签配合if和else 和 动态修改标题栏
  12. java里decimalformat_Java中DecimalFormat用法详解
  13. unix 与 linux 操作系统 介绍
  14. HFSS阵列天线仿真
  15. 这篇文章让你搞懂 SpringMVC 国际化!
  16. 计算机专业英语复习第一天
  17. 美团技术团队书单(通用能力篇)
  18. SQL基础教程【日】MICK著 孙淼 罗勇译 ISBN 978-7-115-32269-2
  19. AS400 EBCDIC码转UTF-8码
  20. Python如何查询版本号

热门文章

  1. 【尚硅谷_java基础】十四、IO流
  2. rippled服务节点搭建学习
  3. Java常用加密解密核心算法
  4. pyspider爬虫学习-教程2-AJAX-and-more-HTTP.md
  5. 《勇者斗恶龙 4 被引导的人们》再次突袭手游市场!
  6. python第三方库笔记本_Python小白别再折腾开发环境了,一劳永逸的搭建方法
  7. 小礼盒礼金卡接口分享
  8. js数据类型和数据结构
  9. Oracle 插入Date数据
  10. 蚂蚁智能运维:单指标异常检测算法初探