PXE实现批量无人值守部署 linux 操作系统

传统的方式部署计算机时,都需要人工干预的方式完成安装。生产环境下,往往面临几百台甚至上千台服务器一同部署,上线时间紧急,需要耗费大量的时间。同时传统的安装方式,每台计算机都需要光驱设备及安装光盘等介质,会额外增加部署成本。最重要的是手工单台部署的服务器往往会出现配置差异,在当前流行的分布式环境下,配置的差异总是会导致意想不到问题进而影响部署质量。

一、相关服务和工具

1、PXE协议

PXE 是由 Intel 设计的协议,计算机可以通过 PXE 协议从网络引导启动。PXE 协议在启动过程分为 client 和 server 端,PXE 协议运行过程主要解决两个问题:首先解决 IP 地址的问题,然后解决如何传输操作系统启动文件和安装文件的问题。对于第一个问题,可以通过 DHCP Server 解决,通常情况下 DHCP 服务器主要用于分配 IP 地址给客户端。但在 PXE 环境下,DHCP 服务器需要额外加载 PXE 的相关配置。针对第二个问题,在启动初期因为 PXE client 中有相应的 TFTP 客户端,可以通过 TFTP 协议到 TFTP 服务器中下载相关文件启动计算机。后期在安装过程中,则通过 FTP 或 NFS 协议提供大量的操作系统安装文件的下载。

2、Kickstart

通过传统的方式安装和部署计算机时,都会要求通过交互的方式,回答各类问题,以完成安装和部署任务,过程繁琐,且无法实现自动化。红帽公司开发了 Kickstart 的安装方法,通过 ks 自动应答文件可以解决所有普通安装方式中需要回答的问题。可以通过 system-config-kickstart 工具定制 ks 文件,也可以通过相关语法来手工编写安装脚本。

3、操作系统

本次实验中所使用和安装的操作系统为CentOS 6,理论上 CentOS 7也是适用的。

4、DHCP

动态主机配置协议,主要用于给 DHCP 客户端自动分配 IP 地址,便于用户管理网络内部的计算机。针对 PXE 环境下,DHCP 服务器除分配 IP 地址外,还需要额外配置”next-server”选项定义 TFTP 服务器的地址,设置”filename”选项定义启动文件的名称。并且启动”booting”与”bootp”的支持。

5、TFTP与FTP

简单文件传输协议(TFTP)主要用于为客户机与服务器之间进行简单文件传输的协议。在 PXE 早期启动过程中,主要通过 TFTP 协议传输”pxelinux.0”。文件传输协议(FTP),适用于大量文件传输的情形,在后期安装过程,主要通过 FTP 协议传输 Linux 操作系统的安装包。

二、服务端软件安装及配置


FTP 服务主要是下载 ks.cfg 文件和 操作系统文件的,也可以用 Apache或 NFS 来代替。

  • 安装vsftpd服务

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

  • 提供操作系统镜像文件

FTP 默认配置即可,我们需要适用匿名用户。通过ftp安装操作系统,我们需要把操作系统镜像文件拷贝到这个匿名用户目录

[root@localhost ~]#vim /etc/rc.local

添加 mount -o loop ~/CentOS-6.7-x86_64-bin-DVD1.iso /var/ftp/pub/           #开机自动挂载镜像

[root@localhost ~]# mount /dev/cdrom /var/ftp/pub/                                      # /var/ftp/pub是ftp的匿名用户目录

  • 启动ftp服务

[root@localhost ~]# service vsftpd start                                                         #服务启动

[root@localhost ~]# chkconfig vsftpd on                                                         #服务开机启动


  • 安装dhcp和tftp服务

DHCP 和 TFTP 服务可以选择单独分别去安装,也可以通过安装 dnsmasq 服务,来实现 DHCP 和 TFTP 的功能。

  • 安装dnsmasq软件包

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

  • 配置dnsmasq

dnsmasq 的配置文件是 /etc/dnsmasq.conf,主要是去掉以下相关的注释,并设置修改 DHCP 的范围和 TFTP 的根目录。

[root@localhost ~]# vim /etc/dnsmasq.conf

bogus-priv

filterwin2k

interface=eth0

dhcp-range=192.168.0.50,192.168.0.100,12h

dhcp-boot=pxelinux.0

enable-tftp

tftp-root=/var/tftp                                                                                             # tftp目录默认是没有的,需要手动创建

dhcp-authoritative

  • 创建tftp根目录

[root@localhost ~]# mkdir /var/tftp

  • 启动dnsmasq

[root@localhost ~]# service dnsmasq start 

[root@localhost ~]# chkconfig dnsmasq on


三、准备相关文件

  • 从iso中拷贝内核镜像和文件系统镜像

cp /var/ftp/pub/images/pxeboot/initrd.img /var/tftp/                                # 拷贝文件系统镜像

cp /var/ftp/pub/images/pxeboot/vmlinuz /var/tftp/                                  # 拷贝内核镜像文件

  • 生成pxe启动文件pxelinux.0

[root@localhost ~]# yum install -y syslinux                                                                           # 安装pxelinux.0所需要的包

[root@localhost ~]# rpm -ql syslinux | grep "pxelinux.0"                                                       # 查询文件所在目录

[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/tftp/                                           # 拷贝pxelinux.0文件到tftp根目录

  • 准备默认的菜单配置文件

[root@localhost ~]# mkdir /var/tftp/pxelinux.cfg/                                                                  # 创建pxelinux.cfg目录,固定目录名称

[root@localhost ~]# vim /var/tftp/pxelinux.cfg/default                                                          # default文件,必须为这个名称

 编辑内容如下:

default linux

prompt 1

timeout 60

display boot.msg

label linux

kernel vmlinuz

append initrd=initrd.img text ks=ftp://192.168.0.3/ks.cfg                    # 指定ks.cfg文件下载路径

  • 生成kickstart文件

[root@localhost ~]# vim /var/ftp/ks.cfg

    #platform=x86, AMD64, 或 Intel EM64T

    #version=DEVEL

    # Firewall configuration

    firewall --disabled

    # Install OS instead of upgrade

    install

    # Use network installation

    url --url="ftp://192.168.0.3/pub";

    # Root password

    rootpw --iscrypted $1$FUYTO1zE$ZBoqji3ZhTTc.EftG6/lz.

    # System authorization information

    auth  --useshadow  --passalgo=sha512

    # Use text mode install

    text

    firstboot --disable

    # System keyboard

    keyboard us

    # System language

    lang en_US

    # SELinux configuration

    selinux --disabled

    # Installation logging level

    logging --level=info

    # Reboot after installation

    reboot

    # System timezone

    timezone --isUtc Asia/Shanghai

    # System bootloader configuration

    bootloader --location=mbr --md5pass="$1$N09BECZk$G7UwB/8QjL4qQ2TmUqhpR0"

    # Clear the Master Boot Record

    zerombr

    # Partition clearing information

    clearpart --all --initlabel

    # Disk partitioning information

    part /boot --fstype="ext4" --size=200

    part swap --fstype="swap" --size=4096

    part / --asprimary --fstype="ext4" --grow --size=1

    %packages

    @base

    @basic-desktop

    @chinese-support

    @compat-libraries

    @debugging

    @desktop-debugging

    @desktop-platform

    @development

    @fonts

    @graphical-admin-tools

    @input-methods

    @kde-desktop

    @legacy-x

    @remote-desktop-clients

    @system-admin-tools

    @x11

    %end

    # 还有很多内容

  • 配置kickstart文件权限

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

  • 服务端ip设置为192.168.0.3:重启配置完成!

四、客户端安装操作系统验证

以上准备工作完成之后,PXE批量部署服务器配置完成,安装验证

1、准备客户机

2、网络配置客户机与服务器在同一局域网内

3、设置客户机BIOS网络启动

4、开机等待客户机网络启动,开始自动化部署

五、问题解决

有的客户机设置了 BIOS 网络启动,仍然不能正常从网络来启动部署,需要查找到 BISO 的关于 PXE 的开关设置,然后将其打开,每个主机的 BIOS 设置方式都不同,需要自己根据具体的硬件来设置。

没有更多推荐了,返回首页