一、搭建无人执守安装服务器常见概念
无人执守安装服务器需要安装的服务:
• DHCP 服务器用来给客户机分配IP;
• TFTP 服务器用来存放PXE的相关文件,比如:系统引导文件;
• FTP 服务器用来存放系统安装文件;
• KickStart所生成的ks.cfg配置文件;
• 带有一个 PXE 支持网卡的将安装的主机;
1、PXE原理和概念:
PXE严格来说并不是一种安装方式,而是一种引导的方式。进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE (Pre-boot Execution Environment)协议使计算机可以通过网络启动。
协议分为 client 和 server 端,PXE client 在网卡的 ROM 中,当计算机引导时,BIOS 把 PXE client 调入内存执行,由 PXE client 将放置在远端的文件通过网络下载到本地运行。
运行 PXE 协议需要设置 DHCP 服务器 和 TFTP 服务器。DHCP 服务器用来给 PXE client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。
此外,在 PXE client 的 ROM 中,已经存在了 TFTP Client。PXE Client 通过 TFTP 协议到 TFTP Server 上下载所需的文件。
2、kickstart概述
KickStart是一种无人职守安装方式。KickStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为 ks.cfg的文件;在其后的安装过程中(不只局限于生成KickStart安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找 KickStart生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。
这样,如果KickStart文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统,并结束安装。
二、搭建无人执守安装服务器安装及配置文件
1、实验环境
服务端:xuegod130 ens33 IP:192.168.1.130 网卡模式: 桥接模式
服务端:xuegod130 ens38 IP:192.168.2.200 网卡模式: LAN1 必须以图形界面启动
客户端:xuegod160 ens33 IP:192.168.2.160 网卡模式: LAN1
实验拓扑图:
2、配置基本环境
1)xuegod130增加一块网卡,网卡模式设置为LAN区段,用于和后续安装的客户端进行互联
2)给新增加的网卡配置IP地址
[root@xuegod130 ~]# cd /etc/sysconfig/network-scripts/
[root@xuegod130 network-scripts]# cp ifcfg-ens33 ifcfg-ens38
[root@xuegod130 network-scripts]# vim ifcfg-ens38
NAME=“ens38”
UUID=“1c939238-6bca-482d-a174-639839dc570b”
DEVICE=“ens38”
ONBOOT=“yes”
IPV6_PRIVACY=“no”
IPADDR=“192.168.2.200”
PREFIX=“24”
GATEWAY=“192.168.2.1”
[root@xuegod130 network-scripts]# ifup ens38
3)新建一个虚拟机,BIOS启动为:网络启动,先不开机,等我们搭建完服务后,再启动
4)关闭防火墙和selinux
[root@xuegod130 ~]# systemctl stop firewalld ; systemctl disable firewalld
5)无人执守安装服务器的运行原理和拓扑图
搭建PXE + KickStart步骤:
• DHCP 服务器用来给客户机分配IP;
• TFTP 服务器用来存放PXE的相关文件,比如:系统引导文件;
• FTP 服务器用来存放系统安装文件;
• KickStart所生成的ks.cfg配置文件;
• 带有一个 PXE 支持网卡的将安装的主机;
3、搭建PXE环境服务
1)安装ftp服务以及开机服务设置为开机自动启动
[root@xuegod130 ~]# yum -y install vsftpd
[root@xuegod130 ~]# mount /dev/cdrom /var/ftp/pub/ #将系统镜像挂载到默认的ftp目录下
mount: /dev/sr0 写保护,将以只读方式挂载
[root@xuegod130 ~]# systemctl start vsftpd
[root@xuegod130 ~]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
2)本地客户端登录ftp服务器,可以看到挂载成功
4、搭建TFTP,并修改配置文件和设置开机自动启动
1)安装tftp
[root@xuegod130 ~]# yum -y install tftp tftp-server xinetd
tftp:tftp客户端
tftp server:tftp服务端
2)创建tftp家目录
[root@xuegod130 ~]# mkdir /tftpboot
3)配置tftp服务器
[root@xuegod130 ~]# vim /etc/xinetd.d/tftp #tftp的配置文件
13 server_args = -s /tftpboot
14 disable = no
注:
disable = no #不关闭tftp服务,就是开启tftp服务
server_args = -s /tftpboot #这是tftp服务器运行时的参数。-s /tftpboot表示服务器默认的目录是 /tftpboot,当你执行put a.txt时,文件会被放到服务器的/tftpboot/a.txt,省去你敲put a /tftpboot/的麻烦。你也可以加其它服务器运行参数到这,具体可以执行man tftpd命令查阅。
4)启动tftp服务,并查看端口是否监听
[root@xuegod130 ~]# systemctl start xinetd
[root@xuegod130 ~]# ss -tlunp | grep 69
udp UNCONN 0 0 *:69 : users:((“xinetd”,pid=12084,fd=5))
5、将PXE启动所需要的相关文件复制到tftp目录下
1)安装软件system-config-kickstart、syslinux
[root@xuegod130 ~]# yum -y install system-config-kickstart syslinux
2)准备tftp需要共享出去的文件
[root@xuegod130 ~]# mkdir /tftpboot/pxelinux.cfg #创建目录
[root@xuegod130 ~]# cp /usr/share/syslinux/pxelinux.0 /tftpboot/ #系统引导文件
注:只有安装了kickstart包,才会有/usr/share/syslinux/目录及目录下的文件
[root@xuegod130 ~]# cp /var/ftp/pub/images/pxeboot/vmlinuz /tftpboot/ #内核文件
[root@xuegod130 ~]# cp /var/ftp/pub/images/pxeboot/initrd.img /tftpboot/ #内核初始化镜像文件
[root@xuegod130 ~]# cp /var/ftp/pub/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
#引导菜单:isolinux.cfg–开机选择启动项的菜单文件
[root@xuegod130 ~]# chmod 644 /tftpboot/pxelinux.cfg/default #修改文件权限
6、安装DHCP服务器,修改配置文件并设置服务开机自启动
1)安装DHCP服务
[root@xuegod130 ~]# yum -y install dhcp
2)配置DHCP服务器
[root@xuegod130 ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y #拷贝模板文件
3)清空配置文件,重新写入
[root@xuegod130 ~]# cd /etc/dhcp/
[root@xuegod130 dhcp]# >dhcpd.conf
[root@xuegod130 dhcp]# vim dhcpd.conf
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.100 192.168.2.200;
option domain-name-servers 192.168.2.1;
option domain-name “internal.example.org”;
option routers 192.168.2.1;
option broadcast-address 192.168.2.255;
default-lease-time 600;
max-lease-time 7200;
next-server 192.168.2.200;
filename “pxelinux.0”;
}
注释:
#subnet 192.168.2.0 netmask 255.255.255.0 服务端IP网段及掩码。
#range 192.168.1.200 192.168.2.200; dhcp分发的地址范围,最好将本机IP包含在内。
#option domain-name-servers 192.168.2.1; 指定默认DNS地址。
#option domain-name “internal.example.org”; 指定默认域名。
#option routers 192.168.2.1; #指定默认网关。
#default-lease-time 600;max-lease-time 7200; IP地址租约时间。
#next-server 192.168.1.63; TFTP服务器地址。
#filename “pxelinux.0”; 指定引导文件位置,这里是TFTP根目录下的pxelinux.0。
4)重启服务,设置开启自启动
[root@xuegod130 dhcp]# systemctl start dhcpd
[root@xuegod130 dhcp]# systemctl enable dhcpd
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.
7、修改default,指定操作系统的方式和ks.cfg文件路径
再次我们已经把所有需要安装和部署的服务已经调试、安装完毕
1)修改default文件
[root@xuegod130 ~]# vim /tftpboot/pxelinux.cfg/default
1 default linux #修改为linux
64 append initrd=initrd.img inst.repo=ftp://192.168.2.200/pub inst.ks=ftp://192.168.2.200/ks.cfg
注:指定通过网络启动系统时,通过FTP服务器访问kickstart文件。
第1行:default linux表示指定默认入口名称;
第61到64行:表示定义的引导入口,要开始自动安装,安装程序必须能访问kickstart文件。
有多种方法可访问kickstart文件,其中最常用的一种方法是通过网络服务器进行,例如:ftp服务器、WEB服务器或NFS服务器,这种方法非常易于部署,并且也使管理更改变得十分简单。
扩展:使安装程序指向kickstart文件的常见书写格式:
ks=ftp://server/dir/file 如:ks=ftp://192.168.1.63/ks.cfg
ks=http://server/dir/file 如:ks=http://192.168.1.63/ks.cfg
ks=nfs:server:/dir/file 如:ks=nfs:192.168.1.63:/var/ftp/pub/ks.cfg
注意:这里还没有配置ks.cfg文件,下面的实战项目,开始配置ks.cfg文件
三、实战-为公司搭建一个无人执守安装服务器
1、创建配置文件前,我们需要修改下yum为本地源,否则在下面选择软件包安装的这一步不能选择,提示被禁止
[root@xuegod130 ~]# cd /etc/yum.repos.d/
[root@xuegod130 yum.repos.d]# ls
CentOS-Base.repo CentOS-CR.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Media.repo CentOS-Sources.repo CentOS-Vault.repo
[root@xuegod130 yum.repos.d]# mkdir back
[root@xuegod130 yum.repos.d]# mv ./*.repo back/
[root@xuegod130 yum.repos.d]# ls
back
[root@xuegod130 yum.repos.d]# vim my.repo
[root@xuegod130 yum.repos.d]# cat my.repo
[development] (强调名称必须是development,否则无效)
name=my-centos7-dvd
baseurl=file:///var/ftp/pub
enabled=1
gpgcheck=0
[root@xuegod130 yum.repos.d]# yum makecache
注释:创新建立yum缓存。如果不新建缓存,还使用原来带着外网源的yum缓存,那么执行system-config-kickstart就会报错的。
2、创建ks应答文件
[root@xuegod130 yum.repos.d]# yum install -y gdm #我这里的操作系统安装有图形化界面,所以提示不用安装
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
软件包 1:gdm-3.26.2.1-5.el7.x86_64 已安装并且是最新版本
无须任何处理
3、执行命令,开始编写ks.cfg文件
[root@xuegod130 ~]# system-config-kickstart
注释:执行这个命令后是图形话界面,所以需要借助第三方工具xstart软件;或者执行命令init 5进入图形化桌面后再次执行上述命令,可以进入配置ks.cfg文件的界面,如下
1)基本配置
设置下默认安装的语言,时区,根口令,然后勾选下面的安装后重新引导。然后选择安装方法。
注:对于“安装后重启”这一项,建议不勾选。因为系统在重启的过程中,如果第一引导顺序还是网卡,那么会再次重新安装系统。
情况2:如果被安装的服务器原来就没有系统,就可以把“安装后重启”这个对勾打上了,因为安装系统时默认是磁盘作为第一引导,而磁盘中没有系统,就直接跳过了磁盘引导,使用网卡引导,当系统安装好后,再重启时,自动使用磁盘做引导,正好可以进入新安装的系统。
2)安装方法
配置ftp服务器的安装方法。选择执行全新安装。
3)引导装载程序选项
然后点击引导装载程序选项,配置grub相关选项。
4)分区信息
设置分区大小
boot 200M ,根10G ,swap给1G
5)网络配置
配置网络,默认没有网络设置,点击添加网络,设备名称为ens33,网络类型为dhcp
6)验证
默认配置就可以,不做修改
7)防火墙配置
8)显示配置
默认,不做修改
9)软件包选择
这里选择最小化安装,只带基本命令
10)安装后脚本
安装脚本:在"预安装脚本","安装后脚本"对话框中,可以分别添加在安装前、安装后自动执行可执行语句。此项设置可以使服务器自动化配置变得更加容易。
预安装脚本,这一块我们先不做配置
安装后脚本:配置客户机在完成安装后自动设置YUM仓库。
写入以下脚本内容:
rm -rf /etc/yum.repos.d/*
echo ‘[centos7-source]
name= centos7
baseurl=file:///mnt/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release’ > /etc/yum.repos.d/centos7.repo
11)保存退出
12)命令行查看/root目录下是否有ks.cfg文件
[root@xuegod130 ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg ks.cfg
13)服务制ks.cfg文件到ftp目录下/var/ftp/
[root@xuegod130 ~]# cp /root/ks.cfg /var/ftp/
[root@xuegod130 ~]# ll /var/ftp/ks.cfg
-rw-r–r-- 1 root root 1190 5月 22 00:30 /var/ftp/ks.cfg
注:ks.cfg就是无人值守安装时要用的Kickstart文件。
要对应:/tftpboot/pxelinux.cfg/default文件中设置过ks=ftp://192.168.1.63/ks.cfg
14)启用文章开始创建的一个虚拟,设置了网卡启动如下:
虚拟机的网卡选择LAN1,和远程服务器的网卡同一个LAN
开启虚拟机,进入后,按下ESC键,选择网卡启动,按下enter键
可以看到获取到IP地址,在加载文件