08-无人值守自动批量安装系统(上)

之前我们安装系统都还是用光盘,后来光驱逐渐被淘汰,也就顺应时事,开始使用U盘安装;但是在企业中,这个方式需要将刻录好系统的U盘插在每台需要安装系统的服务器上;所以,为了更加便捷快速,节约时间;也就开始使用批量安装系统,并行网络安装

无人值守自动批量安装系统(上)中需要使用到的服务:PXE + Kickstart + DHCP + TFTP + FTP

其原理相对来说也还是较为简单的,以下这幅图就可大致了解:

 

整个架构:PXE + Kickstart + DHCP + TFTP + FTP

PXE;PXE 并不是一种安装方式,而是一种引导的方式,所以需要网卡支持网络引导
PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的技术,工作于Client/Server的网络模式,

PXE客户端会调用网际协议(IP)、用户数据报协议(UDP)、动态主机设定协议(DHCP)、小型文件传输协议(TFTP)等网络协议;

KickStart:是一个项目,不是软件

工作原理就是记录安装过程中所需人工干预填写的各种参数,并生成一个名为 ks.cfg的文件;然后在安装过程中当出现要求填写参数的情况时,安装程序会首先去查找 ks.cfg读取设置

而后由DHCP服务提供IP地址,TFTP提供启动文件(pxelinux.0 ;isolinux/* ;pxelinux.cfg/default),FTP提供自动应答文件下载和安装系统所需的所有rpm包

虽然看着架构需要的服务挺多的,但是所有的服务都可以由一台服务器来提供,节省资源

[root@ks-server ~]# cat /etc/redhat-release 
CentOS Linux release 7.5.1804 (Core) 
[root@ks-server ~]# uname -r
3.10.0-862.el7.x86_64
[root@ks-server ~]# uname -i
x86_64
[root@ks-server ~]# uname -n
ks-server

外网IP
10.0.0.101

内网IP

172.16.1.101

一、准备ks.cfg文件;

第一种方案如果有安装图形化界面可以使用图形界面来生成:

[root@ks-server ~]# system-config-kickstart  
bash: system-config-kickstart: command not found...

[root@ks-server ~]# yum intsall system-config-kickstart

 

这就是图形配置界面,如果发现软件包这块是空白无法选择的话,可以将yum源更改为本地源
,并且请将仓库ID设置为[development] (试过其他的无效)

yum remove -y system-config-kickstart

yum clean all
yum makecache
yum install -y system-config-kickstart
system-config-kickstart
重新安装运行即可

第二种方案:其实在安装系统的时候,系统就已经自动替我们保存了一份;就是/root家目录下的anaconda-ks.cfg

只需要对这个配置文件稍加修改即可

第三种方案:完全自己手动编写一个方案

推荐对ks.cfg配置文件熟悉,但是也无需每次批量安装的时候都重新编写,可以留存一个模板,然后根据实际需求稍加修改,这样会省时省力些!

ks.cfg的组成:

  命令段

  包组段

    以%packages开头,以%end结束
  脚本段

     以%post开头,以%end结束,在安装完系统之后执行的相关Linux命令、脚本
     以%pre开头,以%end结束,在安装完系统之前执行的相关Linux命令、脚本

设置root密码最好使用密文,增加安全性:python -c 'import crypt; print(crypt.crypt("密码"))'

或 try: "openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'" to generate new one

编写好ks配置文件后可用ksvalidator 来检查语法

yum install pykickstart
ksvalidator ks.cfg

二、DHCP服务

[root@ks-server ~]# yum install dhcp -y  #安装服务
[root@ks-server ~]# grep -vE "#|^$" /usr/share/doc/dhcp*/dhcpd.conf.example #默认的模板配置文件
这里我们只需一个subnet段即可,最简单的配置

subnet 172.16.1.0 netmask 255.255.255.0 {
    range 172.16.1.100 172.16.1.200;   # 可分配的起始IP-结束IP
    option subnet-mask 255.255.255.0;  # 设定netmask
    default-lease-time 21600;    # 设置默认的IP租用期限
    max-lease-time 43200;    # 设置最大的IP租用期限
    next-server 172.16.1.101;  # 告知客户端TFTP服务器的ip
    filename "/pxelinux.0";  # 告知客户端从TFTP根目录下载pxelinux.0文件
}
[root@ks-server ~]# cat /etc/dhcp/dhcpd.conf 
subnet 172.16.1.0 netmask 255.255.255.0 {
range 172.16.1.150 172.16.1.200;   
option subnet-mask 255.255.255.0;  
default-lease-time 21600;        
max-lease-time 43200;          
next-server 172.16.1.101;        
filename "/pxelinux.0";          
}  

启动服务:

[root@ks-server ~]# systemctl start dhcpd

三、TFTP服务器

 安装tftp服务

[root@ks-server ~]# yum -y install tftp-server

修改配置文件

 vim /etc/xinetd.d/tftp
    disable = no

#将原先的disable = yes更改为disable = no

拷贝所需文件

[root@ks-server ~]# yum -y install syslinux
[root@ks-server ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@ks-server ~]# mount /dev/sr0 /mnt
[root@ks
-server ~]# cp /mnt/isolinux/* /var/lib/tftpboot/
[root@ks-server ~]# mkdir -p /var/lib/tftpboot/pxelinux.cfg
[root@ks-server ~]# cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

tftp服务最终目录显示

[root@ks-server ~]# tree -F  /var/lib/tftpboot/
/var/lib/tftpboot/
├── boot.cat
├── boot.msg
├── grub.conf
├── initrd.img
├── isolinux.bin
├── isolinux.cfg
├── memtest
├── pxelinux.0
├── pxelinux.cfg/
│   └── default
├── splash.png
├── TRANS.TBL
├── vesamenu.c32
└── vmlinuz*

1 directory, 13 files

启动服务

[root@ks-server ~]#  systemctl start tftp.socket

四、FTP服务

安装服务

[root@ks-server ~]# yum install vsftpd -y

拷贝所需的rpm包等文件

[root@ks-server pub]# cp -a /mnt/ /var/ftp/pub/

拷贝ks文件

[root@ks-server ~]# cp anaconda-ks.cfg /var/ftp/pub/
[root@ks-server ~]# cd /var/ftp/pub/
[root@ks-server pub]# mv anaconda-ks.cfg ks.cfg 
[root@ks-server pub]# mv anaconda-ks.cfg ks.cfg 
[root@ks-server pub]# vim ks.cfg 

#cdrom #这里将cdrom指向ftp共享的路径

url --url="ftp://172.16.1.101/pub/mnt/"

启动服务

[root@ks-server ~]# systemctl start vsftpd

[root@ks-server ~]# setenforce 0
[root@ks-server ~]# systemctl stop firewalld

 

五、编辑default文件

[root@ks-server pub]# cat -n  /var/lib/tftpboot/pxelinux.cfg/default
    61    label linux
    62      menu label ^Install CentOS 7
    63      kernel vmlinuz
    64      #append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet
    65      append initrd=initrd.img inst.repo=ftp://172.16.1.101/pub/mnt inst.ks=ftp://172.16.1.101/pub/ks.cfg
    66    

将label linux的append那一行配置文件修改,ks文件指向正确的位置;rpm等文件正确的位置指向

这个配置文件就是开始时的选择

 

默认600即60秒

 

六、开始测试安装

出现错误

 如果出现这个错误,基本上都是共享文件服务(FTP/HTTP/NFS)出现了问题,所以需要确保selinux,防火墙都不是影响因素

服务是否开启

而有地址指向的配置文件也需要确保;ks.cfg以及default是否写错

权限是否存在问题

这里上面ks文件权限没给,chmod -R 777 /var/ftp/pub/

还有一个问题就是内存不能给的过小,至少2G

 

 要详细过程可以用抓包的方式获取

yum install wireshark -y
#安装抓抓包件
 

tshark -ni 网卡名
#抓包

还可以监控日志

tail -f /var/log/messages

 


posted @ 2019-08-11 13:22  25℃  阅读(1169)  评论(0编辑  收藏  举报