介绍

批量部署前首先应该拥有一台部署完成的系统,也就是“样板机”。

centos7建议内存1.5g以上

当然,也可以采用直接编辑ks.cfg文件的方式来自定义需要的操作系统以及安装的软件。

但是必须拥有一台Server端来提供服务,也就是PXE_Server,该台设备性能决定了能够同时部署的集群最大规模数量。

PXE_Server部署DHCP、TFTP、Xinetd、Kickstart、(HTTP/FTP/NFS任选其一,本次部署采用HTTP),用来提供安装所需要的系统文件以及所要安装的软件。
关闭Firewalld/SElinux(为实验方便,减少麻烦,生产环境不推荐)

PXE批量部署原理:

  1. PXE Client 从自己的PXE网卡启动,向本网络中的DHCP服务器请求IP;
  2. DHCP 服务器返回分配给客户机的IP 以及PXE文件的放置位置
    (该文件一般是放在一台TFTP服务器上);
  3. PXE Client 向本网络中的TFTP服务器索取pxelinux.0 文件
    (在 PXE Client 的 ROM 中,已经存在 TFTP Client);
  4. PXE Client 取得pxelinux.0 文件后之执行该文件;
  5. 根据pxelinux.0 的执行结果,通过TFTP服务器加载内核和文件系统 ;
  6. 进入安装画面, 此时可以通过选择HTTP、FTP、NFS 方式之一进行安装;

1、DHCP服务器:为 PXE-client 分配 IP ,获得安装程序文件位置
2、TFTP服务器:传输安装文件、内核、菜单文件等给 PXE-client
3、Xinetd: TFTP服务超级守护进程, 用于唤醒TFTP服务;
4、Kickstart:生成的ks.cfg配置文件
5、HTTP/NFS/FTP 服务中的任意一种,用于传送安装源文件给 PXE-client

一、关闭Firewalld/SElinux,简单介绍一下,不再赘述


关闭并禁用防火墙:

systemctl disable firewalld.service

systemctl stop firewalld.service

禁用SElinux:

  编辑etc/sysconfig/selinux,永久关闭SELinux(需要重启系统)

  SELINUX=disabled

二、安装DHCP服务(多网卡)

yum install dhcp -y

修改配置文件

#---------可用最简配置-------------------

网络和子网掩码(根据自己实际情况编写)

cat >>/etc/dhcp/dhcpd.conf<<EOF
subnet 192.168.49.0 netmask 255.255.255.0 {
range 192.168.49.131 192.168.49.190;
option subnet-mask 255.255.255.0;
default-lease-time 21600;
max-lease-time 43200;
next-server 192.168.49.130;
filename "pxelinux.0";

 }
EOF
systemctl restart dhcpd

配置文件说明:

range 192.168.49.131 192.168.49.190; # 可分配的起始IP-结束IP
 option subnet-mask 255.255.255.0; # 设定netmask
 default-lease-time 21600; # 设置默认的IP租用期限
 max-lease-time 43200; # 设置最大的IP租用期限
 next-server 192.168.49.130; # 告知客户端TFTP服务器的ip
 filename “/pxelinux.0”; # 告知客户端从TFTP根目录下载pxelinux.0文件

我没有用到
在多网卡的情况下指定某块网卡启动DHCP服务,复制文件,修改配置文件,重新注册服务

cp /usr/lib/systemd/system/dhcpd.service /etc/systemd/system/
vi /etc/systemd/system/dhcpd.service
ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid <your_interface_name(s)>(我要使用的网卡是ens192)
systemctl --system daemon-reload
systemctl restart dhcpd.service
systemctl enable dhcpd.service

三、安装TFTP服务(无需认证,小文件传输)

安装xinetd、tftp-server和syslinux服务

#syslinux 会在 /usr/share/syslinux/pxelinux.0 生成pxelinux.0文件 ,需要手动复制到/var/lib/tftpboot/ 目录中,后面详细介绍。

yum install xinetd -y
yum install tftp-server syslinux -y

配置xinetd,由xinetd管理tftp

vim /etc/xinetd.d/tftp
service tftp

{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot        
        disable                 = no  #只改这一行默认disable是yes的,把它改为no即可
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}
systemctl enable tftp
systemctl enable xinetd
systemctl start tftp
systemctl start xinetd

四、安装HTTP服务

yum install httpd -y

systemctl start httpd

systemctl enable httpd

五、上传镜像文件

centos引入全局变量 centos7全量安装_html

mkdir /var/www/html/cdrom 
cp -a /mnt/* /var/www/html/cdrom  #建议拷贝,因为要改权限

chown -R apache.apache /var/www/html/*

五、配置ks.cfg文件
ks.cfg模板文件在/root下的anaconda-ks.cfg文件

cp /root/anaconda-ks.cfg  /var/www/html/ks.cfg
chown -R apache.apache /var/www/html/*

编辑ks.cfg文件,稍微修改以下2行

vim /var/www/html/ks.cfg

centos引入全局变量 centos7全量安装_centos引入全局变量_02

六、复制内核文件

内核文件、虚拟根文件以及菜单文件,我们都是通过tftp服务来提供的,由于系统及版本的不同,对于一个比较复制机群来说,我们需要准备不同系统,不同版本的内核文件,initrd.img文件。菜单文件只需要一份即可。

/var/lib/tftpboot/目录规划如下:

挂载光驱,虚拟一定要先在连接光驱打上钩

将镜像中的启动文件COPY到tftp server的根目录中

cp /var/www/html/cdrom/images/pxeboot/vmlinuz     /var/lib/tftpboot/     #第2个文件,vmlinuz文件,在镜像文件images/pxeboot/目录中,
vmlinuz是可引导的、压缩的内核文件,vmlinuz是vmlinux的压缩文件。是可执行的Linux内核
cp /var/www/html/cdrom/images/pxeboot/initrd.img  /var/lib/tftpboot/     #第1个文件,initrd.img文件,在镜像文件images/pxeboot/目录中,
initrd是“initial ram disk”的简写。initrd用来临时的引导硬件到实际内核vmlinuz能够接管并继续引导的状态
复制pxelinux.0文件到tftp目录下,首先安装syslinux
yum -y install syslinux
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
编辑pxelinux.cfg菜单文件,即isolinux.cfg
mkdir /var/lib/tftpboot/pxelinux.cfg
cp /var/www/html/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default # 复制并改名
cp /var/www/html/cdrom/isolinux/vesamenu.c32 /var/lib/tftpboot/
cp /var/www/html/cdrom/isolinux/boot.msg /var/lib/tftpboot
vim /var/lib/tftpboot/pxelinux.cfg/default

#---------只需修改以下参数,图为原始参数,只做修改,不删除-------------------

centos引入全局变量 centos7全量安装_html_03

default linux  #第一行
prompt 0            #1出现提示,0不出现提示

centos引入全局变量 centos7全量安装_linux_04

label linux
  kernel vmlinuz
  append initrd=initrd.img  ks=http://192.168.49.130/ks.cfg  devfs=nomount  #指定ks.cfg文件读取的位置

到此,PXE_Server所需要做的工作已经完成,直接开启所需要安装系统的服务器(或虚拟机)即可。

成功

centos引入全局变量 centos7全量安装_html_05