操作前提
- 服务器不带业务,已接线,可互通。或多个虚拟机已配置在同一NAT网络下。需安装操作系统。
(如需批量部署服务器,但未接线,可自备集线器HUB和网线,HUB的转发能力有限)
- 服务器硬盘配置相同。或虚拟机硬盘容量设置为一致。
- 准备系统镜像文件,如
CentOS-7.4-x86_64-DVD-1708.iso
。
项目部署的准备工作
- 自备笔记本电脑、网线、一个U盘。
- 客户提供的部署方案(分区方案)
操作步骤:
- 按部署方案,安装好第一台服务器。将系统镜像连接在服务器,通过
lsblk
命令确认ROM为sr0
如果不是sr0,需修改脚本。
- 确认服务器系统用于互联的网口名称,如
eno2
,该网口已接线可互通。
- 输入命令:
nmtui
后回车,进入配置网络的图形界面,进入Edit a connection
可以看到服务器有很多网口,分别有不同名称,拍照记录,按BACK
再QUIT
,退出图形界面。
- 使用命令:
ethtool -p 加上网口名
如ethtool -p eno2
,闪烁确认网口。
- 将PXE脚本拷贝到服务器中,并执行命令
./pxe-legacy-tool7.4
,在提示中,输入需要用于pxe部署的网口名称,如eno2
,该网口已接线可互通。
- 其他服务器开机,自动或手动按
F12
进入PXE安装。
脚本内容如下
#!/bin/bash
read -p "what is your PXE internet access:" intername
systemctl stop firewalld
systemctl disable firewalld
############配置本地yum源##################
mkdir /iso
mount /dev/sr0 /iso #如已手工挂载镜像到/iso,这句可注释掉
rm -rf /etc/yum.repos.d/*
touch /etc/yum.repos.d/local.repo
cat > /etc/yum.repos.d/local.repo <<EOF
[base]
name=base
baseurl=file:///iso
gpgcheck=0
EOF
yum clean all
yum list
###########配置网卡######################
cat > /etc/sysconfig/network-scripts/ifcfg-$intername <<EOF
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=no
IPV6_DEFROUTE=no
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=$intername
DEVICE=$intername
IPADDR=192.168.10.20
NETMASK=255.255.255.0
ONBOOT=yes
EOF
systemctl restart network
systemctl status network
ifconfig $intername
###########配置dhcp服务###################
yum install -y dhcp
cat > /etc/dhcp/dhcpd.conf <<EOF
allow booting;
allow bootp;
ddns-update-style interim;
ignore client-updates;
subnet 192.168.10.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.0.1;
range dynamic-bootp 192.168.10.21 192.168.10.255;
default-lease-time 21600;
max-lease-time 43200;
next-server 192.168.10.20;
filename "pxelinux.0";
}
EOF
systemctl restart dhcpd
systemctl enable dhcpd
systemctl status dhcpd
###########配置ftp####################
yum install -y xinetd
systemctl start xinetd
systemctl enable xinetd
yum install -y tftp-server
cat >/etc/xinetd.d/tftp <<EOF
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
}
EOF
systemctl restart xinetd
yum install -y syslinux
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
cp /iso/images/pxeboot/vmlinuz /var/lib/tftpboot
cp /iso/images/pxeboot/initrd.img /var/lib/tftpboot
cp /iso/isolinux/vesamenu.c32 /var/lib/tftpboot
cp /iso/isolinux/boot.msg /var/lib/tftpboot
mkdir /var/lib/tftpboot/pxelinux.cfg
touch /var/lib/tftpboot/pxelinux.cfg/default
cat > /var/lib/tftpboot/pxelinux.cfg/default <<EOF
default linux
label linux
menu label ^Install CentOS 7
kernel vmlinuz
append initrd=initrd.img inst.stage2=ftp://192.168.10.20 ks=ftp://192.168.10.20/pub/ks.cfg quiet
EOF
############配置vsftp##################
yum install -y vsftpd
systemctl restart vsftpd
systemctl enable vsftpd
echo "please wait for minutes ...."
cp -r /iso/* /var/ftp
systemctl restart vsftpd
############应答文件###################
cp ~/anaconda-ks.cfg /var/ftp/pub/ks.cfg
chmod +r /var/ftp/pub/ks.cfg
cat /var/ftp/pub/ks.cfg |grep cdrom
#第一台是从cdrom启动的,后面的并不是,需要修改
sed -i 's/cdrom/url --url=ftp:\/\/192.168.10.20/g' /var/ftp/pub/ks.cfg
sed -i '/^# Disk partitioning information/i\clearpart --all --initlabel' /var/ftp/pub/ks.cfg
扩展阅读
- 学习了解PXE脚本-CSDN博客
https://blog.csdn.net/weixin_34032621/article/details/91509784