之前使用pxe裝機(jī)時(shí)荧止,只是單純的安裝系統(tǒng),安裝完系統(tǒng)后還要使用顯示器對(duì)每臺(tái)設(shè)備進(jìn)行網(wǎng)卡名稱更改阶剑、主機(jī)名更改跃巡、配置網(wǎng)卡bond等等,要是單純的一臺(tái)機(jī)器還可以牧愁,如果機(jī)器的數(shù)量多了起來(lái)素邪,那么這個(gè)工作也變得重復(fù)性非常高了,對(duì)于重復(fù)性高的工作猪半,如果不簡(jiǎn)化流程兔朦,是很浪費(fèi)時(shí)間的。
僅在Dell服務(wù)器和Centos7.6系統(tǒng)上測(cè)試成功磨确,其他設(shè)備和系統(tǒng)未測(cè)試沽甥。
為了節(jié)省這個(gè)時(shí)間,我在pxe的中做了一些手腳:通過(guò)腳本進(jìn)行初始化配置乏奥。
1.PXE-server部分
a.修改ks文件
首先安接,在KS文件中的%post
代碼區(qū),添加如下參數(shù):
echo "localhost.localdomain" > /etc/hostname
cd /home
wget http://172.16.0.100:88/test/message.txt
wget http://172.16.0.100:88/test/auto-by.sh
chmod 777 auto-by.sh
sh auto-by.sh
b.在pxe的html目錄下創(chuàng)建一個(gè)test的文件夾,然后將下面兩個(gè)腳本放進(jìn)去盏檐。
auto-by.sh
#!/bin/bash
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl stop NetworkManager
systemctl disable NetworkManager
#將所有網(wǎng)卡名稱復(fù)制到文本中
ip a |awk '{print $2}'|grep "em"|awk -F ':' '{print $1}' > netname.txt
#賦予變量
net1=`awk -F ' ' '{print $1}' netname.txt | awk 'NR==1'`
mac1=`ip a |grep "ether" | awk '{print $2}'|awk 'NR==1'`
net2=`awk -F ' ' '{print $1}' netname.txt | awk 'NR==2'`
mac2=`ip a |grep "ether" | awk '{print $2}'|awk 'NR==2'`
net3=`awk -F ' ' '{print $1}' netname.txt | awk 'NR==3'`
mac3=`ip a |grep "ether" | awk '{print $2}'|awk 'NR==3'`
net4=`awk -F ' ' '{print $1}' netname.txt | awk 'NR==4'`
mac4=`ip a |grep "ether" | awk '{print $2}'|awk 'NR==4'`
echo -ne "
$net1,$mac1
$net2,$mac2
$net3,$mac3
$net4,$mac4
" >> n-m.txt
#依次校準(zhǔn)網(wǎng)卡的名稱及mac地址
m1=`cat n-m.txt |grep 'em1'|awk -F ',' '{print $2}'`
m2=`cat n-m.txt |grep 'em2'|awk -F ',' '{print $2}'`
m3=`cat n-m.txt |grep 'em3'|awk -F ',' '{print $2}'`
m4=`cat n-m.txt |grep 'em4'|awk -F ',' '{print $2}'`
#根據(jù)SN獲取網(wǎng)卡配置信息
SN=`dmidecode -s system-serial-number 2>/dev/null | awk "/^[^#]/ { print $1 }"`
NAME=`cat /home/message.txt |grep $SN |awk -F ',' '{print $2}'`
IP=`cat /home/message.txt |grep $SN |awk -F ',' '{print $3}'`
MASK=`cat /home/message.txt |grep $SN |awk -F ',' '{print $4}'`
GATEWAY=`cat /home/message.txt |grep $SN |awk -F ',' '{print $5}'`
#將校準(zhǔn)過(guò)的mac地址填寫到需要填寫mac地址的文件中
#寫到網(wǎng)卡名與mac地址綁定的規(guī)則文件中
cat > /etc/udev/rules.d/70-persistent-net.rules <<EOF
SUBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",ATTR{address}=="$m1",ATTR{type}=="1",KERNEL=="eth*",NAME="eth0"
SUBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",ATTR{address}=="$m2",ATTR{type}=="1",KERNEL=="eth*",NAME="eth1"
SUBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",ATTR{address}=="$m3",ATTR{type}=="1",KERNEL=="eth*",NAME="eth2"
SUBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",ATTR{address}=="$m4",ATTR{type}=="1",KERNEL=="eth*",NAME="eth3"
EOF
#寫到網(wǎng)卡配置文件中
cd /etc/sysconfig/network-scripts/
#更名
mv ifcfg-em1 ifcfg-eth0
mv ifcfg-em2 ifcfg-eth1
mv ifcfg-em3 ifcfg-eth2
mv ifcfg-em4 ifcfg-eth3
sed -i 's/em1/eth0/g' ifcfg-eth0
sed -i 's/em2/eth1/g' ifcfg-eth1
sed -i 's/em3/eth2/g' ifcfg-eth2
sed -i 's/em4/eth3/g' ifcfg-eth3
mv ifcfg-eth0{,.bak}
mv ifcfg-eth1{,.bak}
echo -ne "TYPE=Ethernet
NAME=eth0
DEVICE=eth0
HWADDR=$m1
ONBOOT=yes
MASTER=bond0
SLAVE=yes
" >> /etc/sysconfig/network-scripts/ifcfg-eth0
echo -ne "TYPE=Ethernet
NAME=eth1
DEVICE=eth1
HWADDR=$m2
ONBOOT=yes
MASTER=bond0
SLAVE=yes
" >> /etc/sysconfig/network-scripts/ifcfg-eth1
echo "HWADDR=$m3" >> /etc/sysconfig/network-scripts/ifcfg-eth2
echo "HWADDR=$m4" >> /etc/sysconfig/network-scripts/ifcfg-eth3
cat > /etc/sysconfig/network-scripts/ifcfg-bond0 <<EOF
DEVICE=bond0
BONDING_OPTS="mode=0 miimon=100"
TYPE=Bond
BONDING_MASTER=yes
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
NAME=bond0
IPADDR=$IP
NETMASK=$MASK
GATEWAY=$GATEWAY
ONBOOT=yes
EOF
modprobe --first-time bonding
######重啟網(wǎng)卡####
sed -i 's/ONBOOT=yes/ONBOOT=no/g' ifcfg-eth2
##設(shè)置主機(jī)名
sed -i 's/localhost.localdomain/'$NAME'/g' /etc/hostname
message.txt
SN,HOSTNAME,IP,MASK,GATEWAY
注釋:
#SN==================設(shè)備SN
#HOSTNAME==========主機(jī)名
#IP===================bond ip地址
#MASK================bond 掩碼
#GATEWAY=============bond的網(wǎng)關(guān)
2.客戶機(jī)部分
客戶機(jī)只需要設(shè)置好pxe啟動(dòng)即可歇式。