CentOs7 PXE自动批量部署
目录
- 主服务器信息
- 环境
- PXE工作原理
- 部署主服务器
配置网卡IP
配置本地yum源
安装配置DHCP
安装配置TFTP
获取PXE程序
安装配置HTTP
配置ks.cfg文件(安装信息文件)建议使用kickstart安装
配置PEX程序默认配置文件,指定路径
配置完成
主服务器信息
- 系统:CentOs7
- 配置:4C 4G 50GB
- 部署软件:DHCP tftp http
- 网络:VM虚拟机 仅主机网络
环境
- VM虚拟机,仅主机模式取消勾选DHCP
- 在win10机器上的网络配置中,配置IP
- 配置成和虚拟机仅主机模式的IP网段一致
PXE工作原理
- CentOs7主服务器部署DHCP服务器,使用DHCP服务器 分发网络信息,客户机网卡连接到网络,通过DHCP服务器发送tftp服务器IP和PXE程序到客户机
- 客户机连接到网络后读取tftp网络地址,在tftp的根目录下找到pxe启动程序,在内存中执行
- 执行pxe程序后,到指定位置读取镜像,配置文件等,执行自动装机,通过http传输大文件
部署主服务器
- 配置网卡IP
vim /etc/sysconfig/network-scripts/ifcfg-ens33
#需要配置的地方有
BOOTPROTO=static #把dhcp 改为 static 静态IP
ONBOOT=yes #把no 改为 yes 启动网卡
#在最后添加
IPADDR=192.168.121.20
GATEWAY=192.168.121.1
NETMASK=255.255.255.0
DNS1=192.168.121.1
#重启网卡
systemctl restart network
- 配置本地yum源
- 挂载磁盘
mkdir -p /media/cdrom/
mount /dev/sr0 /media/cdrom/
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
- 配置yum
cd /etc/yum.repos.d/
#建议把之前所有的源删除
vi dvd.repo
#文件内容
[development]
name=centos7
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0
#清除缓存
yum clean all
- 配置服务器
yum -y install dhcp tftp-server xinetd
- 配置dhcp服务器
- dhcp服务器的配置文件是:/etc/dhcp/dhcpd.conf
- 模板文件在:/usr/share/doc/dhcp*/dhcpd.conf.example
- 开始配置
vi /etc/dhcp/dhcpd.conf
#文件内容如下
#开启给无操作系统设备分配ip
allow booting;
allow bootp;
#dns配置
ddns-update-style interim;
ignore client-updates;
#分配IP的地址段和子网掩码
subnet 192.168.121.0 netmask 255.255.255.0{
#IP地址的子网掩码
option subnet-mask 255.255.255.0;
#定义dns服务器地址 配置成主服务器地址(dhcp)
option domain-name-servers 192.168.121.20;
#dhcp地址池范围 100个可分配的IP地址
range dynamic-bootp 192.168.121.100 192.168.121.200;
#租约默认使用时间21600秒 6小时
default-lease-time 21600;
#最大租约时间
max-lease-time 43200;
#主服务器地址 当客户端服务器获取到IP地址后 主动到主服务器上获取引导文件
next-server 192.168.121.20; #tftp服务器地址
filename "pxelinux.0"; #根目录下的pxe程序
}
- 启动dhcp 并设置开机自启
systemctl start dhcpd
#设置开机自启
systemctl enable dhcpd
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.
- 测试临时关闭防火墙和selinux
systemctl stop firewalld
setenforce 0
- 配置tftp
#tftp的配置文件在:/etc/xinetd.d/tftp
vim /etc/xinetd.d/tftp
#修改一处
把disable = yes 改为 no
- 保存退出
- 启动服务器并设置开启自启
systemctl start xinetd
systemctl enable xinetd
- 可以通过命令查看是否启动
chkconfig --list
- 表示开启
- tftp的根目录是 /var/lib/tftpboot/ 客户机会读取此根目录
- 接下来 需要把pxe执行程序 “pxelinux.0” 放入tftp的根目录 用于让客户机拉去
yum provides "*/pxelinux.0" #使用此命令查找什么包中存在此文件
- 安装syslinux
yum -y install syslinux
#安装成功后查找pxe执行程序所在目录
rpm -ql syslinux |grep pxe
#复制文件到tftp根目录
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
- 获取到pxe执行程序(引导文件)后 并复制到了tftp根目录下,接下来需要把pxe程序工作所需要的配置文件,镜像等,放置合适位置
#在tftp根目录下创建文件夹
cd /var/lib/tftpboot/
mkdir pxelinux.cfg
- 在挂在目录/media/cdrom下中的iso镜像文件里,有一个 “isolinux” 目录十分重要
- 其中的isolinux.cfg文件是 pxe执行程序的默认配置文件,用来配置开机菜单以及菜单对应的功能,所以我们把他复制到tftp根目录中pxelinux.cfg目录下
cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
- 之后把“isolinux” 目录下的内容 全部复制到 tftp根目录下
cp /media/cdrom/isolinux/* /var/lib/tftpboot/
- 此目录下 最重要的两个文件 是:”vmlinuz“ ,”initrd.img“ 这两个文件一定要匹配操作系统,他们决定了自动安装的系统版本,其中vmlinuz是内核文件 initrd.img是对应的驱动文件,如果想安装不同的系统版本就找对应的光盘里找对应文件
- 安装http用于传输大文件
yum -y install httpd
#启动并设置开机自启
systemctl start httpd
systemctl enable httpd
- 到httpd的根目录下创建目录
cd /var/www/html/
mkdir pxe
mkdir ks #后续说明此目录
#并把iso镜像挂载到此目录下
umount /media/cdrom/
mount /dev/cdrom /var/www/html/pxe/
- 长期挂载
vim /etc/fstab
#末尾加入行
/dev/cdrom /var/www/html/pxe iso9660 defaults,loop 0 0
- 接下来 配置系统信息,linux中有一个工具是:”system-config-kickstart“ 用于配置启动启动时的配置选项并可以导出配置文件,一般在root目录下有一个 anaconda-ks.cfg 文件 就是装系统是的配置选项,如时区,密码,磁盘分区等信息,可以直接使用此文件来自动安装一样的系统配置
- 第一种方法直接复制root目录下的文件 这样就是把现在使用的系统配置复制了一份 后续的客户机都是找个配置的系统
- 我们把root下的配置文件复制到http下
cp /root/anaconda-ks.cfg /var/www/html/ks/ks.cfg #之前创建的ks目录
#把ks.cfg文件授权给apache
chown apache:apache ks.cfg
- 在ks.cfg中指定http目录 用于安装系统的iso文件
vim /var/www/html/ks/ks.cfg
#把备注 Use CDROM installation media下的cdrom 修改为http地址
url --url=http://192.168.121.20/pxe
- 之后把文件放到http根目录的ks目录下
- 第二种方法使用kickstart
- 把yum配置成
- 安装kickstart
yum -y install system-config-kickstart
#使用 system-config-kickstart 命令打开工具
system-config-kickstart
- 设置默认语言中文或者英文,键盘,时区,设置root密码,勾选安装后重启
- 安装方法选择http 输入http服务器和目录
- 引导程序
- 配置磁盘分区 裸机配置
- 分区配置
- 添加网卡配置
- 内核依旧识别eth0
- 安装默认软件包
- 最后两个脚本 先不管
- 配置好之后 把文件导出
- 保存到能找到的位置上
- 配置好之后 把ks文件放入http目录下
cp ks.cfg /var/www/html/ks/ks.cfg
- 然后在pxe程序默认文件中指定ks.cfg文件
vim /var/lib/tftpboot/pxelinux.cfg/default
- 配置文件
- 是否修改都不影响结果 就是等待时间长
最重要的两块
- label linux 是装系统的第一个选项 安装系统,menu 是菜单名称,kernel是内核版本,append 是镜像版本和启动镜像的位置
- label check 是 装系统的第二个选项 检查系统并安装 其中的menu default 是默认选项的意思
修改前
修改后
修改后保存退出
然后可以创建一个仅主机的vm测试