1.简介 

  作为一个实施运维人员而言,如果在部署项目的时候需要每台服务器手动安装操作系统,那是一件不但痛苦还浪费时间的事情。工作中都是提倡高效性的,所以为了效率,我们使用无人值守系统进行批量安装操作系统。使用光盘或U盘这种传统物理方式安装系统效率真的很低,尤其当需要批量部署系统时更是明显。其实我们可以用PXE+DHCP+TFTP+VSftpd+Kickstart部署出无人值守安装系统,这种系统能够实现自动化运维、避免了重复性劳动,帮助提升工作效率。PXE(Preboot execute environment)是一种能够让计算机通过网络启动的引导方式,只要网卡支持PXE协议即可使用。

    Kickstart是一种无人值守的安装方式,工作原理就是预先把原本需要运维人员手工填写的参数保存成一个ks.cfg文件,当安装过程中出现需要填写参数时则自动匹配Kickstart生成的文件,所以只要Kickstart文件包含了安装过程中所有需要人工填写的参数,那么运维人员就完全不需要干预,等待安装完毕即可

2.准备工作

2.1 部署环境

Vmware Workstation

Centos 7.2 虚拟机 IP:10.0.2.1

客户端:未安装操作系统

2.2 配置Vmware Workstation

打开Vmware Workstation,然后点击编辑-->虚拟网络编辑器,如下图

部署无人值守系统_第1张图片

2.3 为虚拟机配置IP地址

在图形界面根据2.2节自定义的网段,手动分配一个IP地址给虚拟机,本文分配了10.0.2.1给虚拟机。过程省略。

2.4 关闭防火墙和SELinux(为了方便实验

#systemctl stop firewalld.service

#setenforce 0  #临时关闭selinux

#getenforce   #查看selinux状态

2.5 配置本地yum源

2.5.1挂载光盘(虚拟机)

#mkdir /media/cdrom

#mount /dev/cdrom /media/cdrom

2.5.2 在/etc/yum.repos.d/目录下创建media.repo文件

#vim media.repo

添加如下内容

[InstallMedia]

name=CentOS Linux release 7.3.1611 (Core)

baseurl=file:///media/cdrom

eabled=1

mediaid=1446216863.790260

metadata_expire=-1

gpgcheck=1(如果是1就不用设置gpgkey)

gpgkey=file:///media/cdrom/RPM-GPG-KEY-CentOS-7

cost=500

2.5.3处理yum缓存

#yum clean all   #清除yum缓存

#yum makecache  #缓存本地yum源中的软件包信息

注:在生产环境中需要把一台物理服务器安装好操作系统,然后在这台服务器上部署无人值守系统,批量部署完毕后删除此无人值守系统。

3.部署

3.1 安装和配置DHCP服务程序

#yum install dhcp -y

#vim /etc/dhcp/dhcpd.conf

将下面的内容复制进去

allow booting;

allow bootp;

ddns-update-style interim;

ignore client-updates;

subnet 10.0.2.0 netmask 255.255.255.0 {

        option subnet-mask      255.255.255.0;

        option domain-name-servers  10.0.2.1;

        range dynamic-bootp 10.0.2.100 10.0.2..200;

        default-lease-time      21600;

        max-lease-time          43200;

        next-server             10.0.2.1;

        filename                "pxelinux.0";

}

启动dhcpd服务和开机自启动

#systemctl start dhcpd

# systemctl enable dhcpd

3.2 安装和配置TFTP服务程序

# yum install tftp-server -y

# vim /etc/xinetd.d/tftp

//将disable的值修改为no。

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

启动xinetd服务并添加到开机启动项中:

# systemctl start xinetd

# systemctl enable xinetd

3.3 安装和配置配置SYSLinux服务程序

syslinux是用于提供引导加载的服务程序,目的是简化安装Linux系统的时间,安装syslinux服务程序:

# yum install syslinux -y

 

将引导相关文件复制到tftp目录以供客户端下载(请确保光盘镜像已挂载到/media/cdrom):

# cd /var/lib/tftpboot

# cp /usr/share/syslinux/pxelinux.0 . #这个“.”表示当前路径

# cp /media/cdrom/p_w_picpaths/pxeboot/{vmlinuz,initrd.img} .

# cp /media/cdrom/isolinux/{vesamenu.c32,*.msg} .

将引导模板文件复制tftp目录:

# mkdir pxelinux.cfg

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

编辑引导模板文件:

# vim pxelinux.cfg/default
//将第1行修改为:
default linux
//将第64行修改为:
appendinitrd=initrd.img inst.stage2=ftp://10.0.2.1 ks=ftp://10.0.2.1/pub/ks.cfg quiet
//将第70行修改为:
append initrd=initrd.imginst.stage2=ftp://10.0.2.1 rd.live.check ks=ftp://10.0.2.1/pub/ks.cfg quiet

3.4 安装和配置vsftpd服务

安装vsftpd服务程序:

# yum install vsftpd -y

启动vsftpd服务程序并添加到开机启动项:

# systemctl start vsftpd
# systemctl enable vsftpd

将光盘镜像文件的内容复制到FTP目录中(请先确保您的光盘已经挂载到/media/cdrom目录):

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

3.5创建KickStart应答文件

复制一份应答文件模板并给于权限:

# cp /root/anaconda-ks.cfg /var/ftp/pub/ks.cfg

# chmod +r /var/ftp/pub/ks.cfg

编辑模板文件:

# vim /var/ftp/pub/ks.cfg

//将第6行的cdrom修改为:

 url ——url=ftp://10.0.2.1

//将第21行的时区修改为:

 timezone Asia/Shanghai ——isUtc

//将第28行修改为:

 clearpart ——all –initlabel

4.测试

4.1 物理机测试

把物理服务器都连接在同一个交换机上,然后直接开机就会自动安装系统。

4.2 虚拟机测试

虚拟机的测试如下面的图所示

 

部署无人值守系统_第2张图片

部署无人值守系统_第3张图片

部署无人值守系统_第4张图片

部署无人值守系统_第5张图片

部署无人值守系统_第6张图片

部署无人值守系统_第7张图片

部署无人值守系统_第8张图片

选择自定义硬件,将网卡的类型修改为与无人值守系统一致如下图

部署无人值守系统_第9张图片