前面介绍了光盘安装和U盘安装,但如果需要同时部署10台服务器呢?100台服务器呢?超哥有一段悲惨的过往,当年从事游戏运维的时候居然有2000多台服务器,现在想起来还是“默默无语两眼泪,耳边响起二胡声”……这么多台服务器如果纯手工安装,那么耗费的人力和时间都将非常可怕。怎么解决这个问题呢?采用无人值守安装!简单地讲,无人值守安装就是搭建一台安装服务器,将其他所有未安装的服务器作为客户端,客户端从服务器上下载所需的软件,并安装所有的客户端服务器,客户端服务器只需修改启动顺序为网络启动,就可以从服务器安装。这种安装方式大大简化了运维工程师的工作量,但是服务器端的搭建比较复杂,并不适合初学者使用。
如果是初学者,则请先跳过无人值守安装,因其设置复杂,所需Linux知识众多,可以在学完本书后续章节后再来玩此应用。
实现网络安装操作系统,有几个问题需要先明确。第一,既然是网络安装,那么客户端在启动时必须获取IP地址,由谁(DHCP)分配IP地址?第二,由谁(PXE)把客户端启动所必需的软件从服务器端传递到客户端?第三,由谁(KickStart)定义客户端的安装选择?比如选择什么语言?安装什么样的软件包?管理员密码是什么?第四,安装过程已经启动,本地安装是通过光盘或U盘保存安装所需的软件包的,那么网络安装通过谁(HTTP、FTP、NFS)来发送所需的软件包?下面我们一一说明这些问题。
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一种局域网的网络协议,它可以使Client端(客户端)从Server端(服务器端)自动获取IP地址、子网掩码、网关及DNS等网络配置信息,从而简化了Client端的配置和操作,是局域网常用服务。
PXE(Pre-boot Execution Environment)是由英特尔设计的协议,它可以使计算机通过网络启动。协议有Server端和Client端,PXE Client保存在网卡的ROM中,当计算机启动时,BIOS把PXE Client调入内存中执行,然后PXE Client通过网络将放在PXE Server端的启动文件下载到本地运行。注意,PXE Client和PXE Server之间传递数据是通过TFTP协议进行的,所以需要配置TFTP服务器。
KickStart是一种无人值守的安装方式。它把安装过程中所有需要人工干预填写的各种参数记录下来,并保存在一个命名为ks.cfg的文件中。如果安装过程中出现需要填写的参数,那么安装程序会从ks.cfg中查找需要的配置。如果ks.cfg文件把所有需要填写的参数都记录完整,那么安装过程中就不需要人为参与,从而实现自动安装。
HTTP、FTP、NFS都是Linux中文件共享的方式,在这里使用一种就可以了,我们选择HTTP服务。它的主要作用就是把安装过程中所需的软件包发布到网络上(注意:PXE发布的是启动必需文件),Client可以通过网络获取所需的软件包。
(1)在服务器上配置DHCP服务。
(2)在服务器上配置TFTP服务。
(3)在服务器上搭建用来发布安装软件包的服务,如HTTP、FTP或NFS等服务。
(4)在服务器上由KickStart生成ks.cfg自动应答配置文件。
(5)客户机的网卡支持PXE(现在的网卡一般都支持)。
(6)客户机的主板支持网络启动(现在的主板一般都支持)。
(1)关闭防火墙和SELinux。注意一定要关闭,否则后续会报错。
chkconfig iptables off
#关闭防火墙
vi /etc/selinux/config
SELINUX=enforcing 改为SELINUX=disabled
重启系统让设置生效
#关闭SELinux
(2)在服务器上搭建本地光盘作为yum源的服务器。
① 将CentOS 6.x的安装光盘放入服务器。
② 挂载光盘到指定目录。
mkdir /mnt/cdrom
#建立光盘挂载点
mount /dev/cdrom /mnt/cdrom
#挂载光盘到/mnt/cdrom中
③ 切换所在目录到yum配置文件目录。
cd /etc/yum.repos.d/
④ 把除光盘yum源之外的其他yum源修改一下文件名,让它失效。
mv CentOS-Base.repo CentOS-Base.repo.bak
mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
mv CentOS-Vault.repo CentOS-Vault.repo.bak
⑤ 修改光盘yum源文件。
该文件的内容按照下面修改:
[c6-media]
name=CentOS-$releasever – Media
baseurl=file:///mnt/cdrom
#修改为光盘的挂载点,注意file后有三个/
# file:///media/cdrom/
# file:///media/cdrecorder/
#注释掉不存在的yum源目录
gpgcheck=1
enabled=1
#把0改为1,代表启用这个yum源文件
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
(3)在服务器上安装并配置DHCP服务。
① 安装DHCP服务。
yum -y install dhcp
② 需要修改一下配置文件/etc/dhcp/dhcpd.conf。但是这个文件默认不存在,在/usr/share/doc/dhcp-4.1.1中有一个配置文件的模板文件,把它复制过去,并重新命名。
cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
③ 修改配置文件。本节不是讲解DHCP服务的,所以我们把不需要的服务全部注释掉,只启用最基本的功能。
vi /etc/dhcp/dhcpd.conf
ddns-update-style interim;
ignore client-updates;
next-server 192.168.150.239;
#指定TFTP服务器的IP地址
filename "pxelinux.0";
#PXE客户端得到IP以后的引导文件
subnet 192.168.150.0 netmask 255.255.255.0 {
#所属网段和子网掩码
option routers 192.168.150.1;
#分配给客户机的网关
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.150.1;
#分配给客户机的DNS
range dynamic-bootp 192.168.150.10 192.168.150.100;
#分配给客户机的IP地址池
default-lease-time 21600;
max-lease-time 43200;
}
④ 启动DHCP服务,并让DHCP服务开机自启动。
service dhcpd start
#启动DHCP服务
chkconfig dhcpd on
#让DHCP服务开机自启动
(4)在服务器上安装并配置TFTP服务。
① 安装tftp-server服务。
yum -y install tftp-server
② 修改TFTP服务配置文件。
vi /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
#指定TFTP服务器目录,之后要在根目录下新建tftpboot目录,所有向客户端传
递的启动文件都要保存在此目录下
disable = no
#把yes改为no,才能启动TFTP服务
per_source = 11
cps = 100 2
flags = IPv4
}
③ 重启TFTP服务。
service xinetd restart
④ 手工建立TFTP服务器目录。
mkdir /tftpboot
⑤ 复制客户端所需的引导文件到/tftpboot目录下。注意:如果安装的是“Basic Server(基本服务器)”,那么引导文件是没有被安装到系统中的,需要手工安装。
yum -y install syslinux
然后再复制引导文件pxelinux.0到/tftpboot/目录下。
cp /usr/share/syslinux/pxelinux.0 /tftpboot/
⑥ 复制客户端所需的配置文件到/tftpboot/目录下,配置文件在第一张光盘中。
mount /dev/cdrom /mnt/cdrom
#挂载光盘
cp /mnt/cdrom/images/pxeboot/initrd.img /tftpboot/
cp /mnt/cdrom/images/pxeboot/vmlinuz /tftpboot/
#以上两个文件是系统启动所必需的Linux镜像文件
cp /mnt/cdrom/isolinux/*.msg /tftpboot/
#复制boot.msg文件到/tftpboot/目录下。此文件是安装过程的提示信息,可以手工修改
mkdir /tftpboot/pxelinux.cfg
#新建保存配置文件的目录
cp /mnt/cdrom/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
#复制配置文件到指定目录,并修改文件名
chmod 644 /tftpboot/pxelinux.cfg/default
#修改这个文件的权限,默认是只读文件
⑦ 修改配置文件的内容。
vi /tftpboot/pxelinux.cfg/default
default linux
#修改default vesamenu.c32为default linux
#prompt 1
timeout 600
display boot.msg
menu background splash.jpg
menu title Welcome to CentOS 6.3!
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000
label linux
#标识哪个lable生效,以下代表lable linux会生效
menu label ^Install or upgrade an existing system
menu default
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.150.239/ks.cfg
#加入放置发布软件包的服务器地址和服务,我用的是HTTP服务
#把自动应答文件(ks.cfg)复制到Apache主目录下
label vesa
menu label Install system with ^basic video driver
kernel vmlinuz
append initrd=initrd.img xdriver=vesa nomodeset
label rescue
menu label ^Rescue installed system
kernel vmlinuz
append initrd=initrd.img rescue
label local
menu label Boot from ^local drive
localboot 0xffff
label memtest86
menu label ^Memory test
kernel memtest
append –
(5)搭建Apache服务器,用来发布安装用软件包。
① 安装Apache服务。
yum –y install http*
② 把第一张光盘的所有内容复制到默认网页主目录。
cp –r /mnt/cdrom/* /var/www/html
③ 启动Apache服务,并保证Apache服务开机自启动。
servcie httpd start
#启动Apache服务
chkconfig httpd on
#设置Apache服务开机自启动
(6)由KickStart生成ks.cfg自动应答配置文件。
因为手工书写配置文件过于烦琐,所以我们采用图形界面工具生成ks.cfg自动应答配置文件。但是我们在安装时采用的是“Basic Server(基本服务器)”,并没有安装图形界面,所以需要先安装图形界面。
① 安装图形界面。
yum –y groupinstall "X Window System"
#安装X Window服务组件
yum –y groupinstall "Desktop"
#安装桌面组件
yum –y install system-config-kickstart
#安装桌面环境下KickStart配置工具
startx
#进入图形界面
② 启用KickStart工具。
system-config-kickstart
●Basic Configuration(基本配置)界面:调整语言、时区和root口令等,如图2-49所示。
图2-49 基本配置
●Installation Method(安装方法)界面:选择“Perform new installation(执行新安装)”,Installation source选择“HTTP”,指定HTTP服务器的IP地址和HTTP目录(这里写“/”),如图2-50所示。
图2-50 安装方法
●Partition Information(分区信息)界面:选择“Clear Master Boot Record(清除主引导记录)”,选择“Remove all existing partitions(删除所有现存分区)”,否则在安装到分区步骤时,会出现确认提示,无法实现全自动安装。然后单击“Add(添加)”按钮添加所需分区,这里我们划分了/boot分区、swap分区和/分区,如图2-51所示。
图2-51 分区信息
●Network Configuration(网络配置)界面:单击“Add Network Device(添加网络设备)”按钮,输入网络设备名,此处指定为eth0;输入网络类型,此处指定为DHCP,如图2-52所示。
图2-52 网络配置
●Firewall Configuration(防火墙配置)界面:SELinux选择为Disabled(关闭),Security level选择为Disable firewall(关闭),如图2-53所示。
图2-53 防火墙配置
●Package Selection(软件包选择)界面:选择需要的软件包,如图2-54所示。
图2-54 软件包选择
●其他页面全部保持默认设置即可。选择“File”→“Save”命令,指定保存文件名和保存位置保存。文件名指定为ks.cfg,保存目录指定为/root/目录。
③ 复制ks.cfg文件到Apache主目录下。
cp /root/ks.cfg /var/www/html
④ 修改ks.cfg文件。
vi /var/www/html
#platform=x86,AMD64,or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
key –skip
#此句实现跳过注册码输入,否则安装过程会报错
# Install OS instead of upgrade
install
# Use network installation
url --url="http://192.168.150.239/"
# Root password
rootpw --iscrypted $1$b.in331n$DDJc03wp6n4vvchCrJ9m5.
# System authorization information
auth --useshadow --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# System keyboard
keyboard us
# System language
lang zh_CN
# SELinux configuration
selinux --disabled
# Installation logging level
logging --level=info
# System timezone
timezone Asia/Chongqing
# Network information
network --bootproto=dhcp --device=eth0 --onboot=on
# System bootloader configuration
bootloader --location=mbr
# 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=1000
part / --fstype="ext4" --grow --size=1
%packages
@chinese-support
@ftp-server
%end
(7)启动客户端,修改BIOS界面,选择启动方式为网络启动。如果一切顺利,那么客户端会自动安装Linux系统。
无人值守安装的服务器端配置相对复杂,并不适合新手学习。如果刚开始学习,则掌握光盘安装即可,在以后工作中用到或对无人值守安装感兴趣再来学习。