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,然后点击编辑-->虚拟网络编辑器,如下图
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 虚拟机测试
虚拟机的测试如下面的图所示
选择自定义硬件,将网卡的类型修改为与无人值守系统一致,如下图