«

Kylin裸金属配置bond脚本

指尖二进制 • 1 年前 • 1281 次点击 • BASH


#!/bin/bash

# baseinfo
time1=$(date "+%Y%m%d%H%M%S")
####
#  bond0=t2+t3  =external network
#  bond1=t0+t1  =mgnt network
##t2
bond0_NIC1=p12p1
##t3
bond0_NIC2=p12p2
##t0
#bond1_NIC1=enp49s0f0
##t1
#bond1_NIC2=enp49s0f1

cfg_bond0_NIC1=ifcfg-${bond0_NIC1}
cfg_bond0_NIC2=ifcfg-${bond0_NIC2}
#cfg_bond1_NIC1=ifcfg-${bond1_NIC1}
#cfg_bond1_NIC2=ifcfg-${bond1_NIC2}
##############################主机名列需要注意一定要用az1、2、3区分,下面会配置dns##########################
cat > /tmp/ipinfo.csv << EOF
sn  ip  hostname    bond
9800183908151236    10.116.21.1     bms-gdb-az1-01  bond0
9800183908151244    10.116.21.2     bms-gdb-az1-02  bond0
9800183908151246    10.116.21.3     bms-gdb-az1-03  bond0
9800183908151243    10.116.21.4     bms-gdb-az1-04  bond0
9800183908151221    10.116.21.5     bms-gdb-az1-05  bond0
9800183908151211    10.116.21.6     bms-gdb-az1-06  bond0
9800183908151226    10.116.21.7     bms-gdb-az1-07  bond0
9800183908151233    10.116.21.8     bms-gdb-az1-08  bond0
9800183908151237    10.116.21.9     bms-gdb-az1-09  bond0
9800183908151227    10.116.21.10    bms-gdb-az1-10  bond0
9800183908151250    10.116.21.11    bms-gdb-az1-11  bond0
9800183908151231    10.116.21.12    bms-gdb-az1-12  bond0
9800183908151218    10.116.21.13    bms-gdb-az1-13  bond0
9800183908151228    10.116.21.14    bms-gdb-az1-14  bond0
9800183908151251    10.116.21.15    bms-gdb-az1-15  bond0
9800183908151254    10.116.21.16    bms-gdb-az1-16  bond0
9800183908151253    10.116.21.17    bms-gdb-az1-17  bond0
9800183908151213    10.116.21.18    bms-gdb-az1-18  bond0
9800183908151209    10.116.21.19    bms-gdb-az1-19  bond0
9800183908151235    10.116.21.20    bms-gdb-az1-20  bond0
9800183908151247    10.116.21.21    bms-gdb-az1-21  bond0
9800183908151249    10.116.21.22    bms-gdb-az1-22  bond0
9800183908151256    10.116.21.23    bms-gdb-az1-23  bond0
9800183908151219    10.116.21.24    bms-gdb-az1-24  bond0
9800183908151215    10.116.21.25    bms-gdb-az1-25  bond0
21B602090   10.116.21.26    bms-gdb-az1-26  bond0
21B602091   10.116.21.27    bms-gdb-az1-27  bond0
21B602092   10.116.21.28    bms-gdb-az1-28  bond0
21B602093   10.116.21.29    bms-gdb-az1-29  bond0
21B602094   10.116.21.30    bms-gdb-az1-30  bond0
21B602095   10.116.21.31    bms-gdb-az1-31  bond0
9800183908151217    10.118.23.1     bms-gdb-az3-01  bond0
9800183908151232    10.118.23.2     bms-gdb-az3-02  bond0
9800183908151224    10.118.23.3     bms-gdb-az3-03  bond0
9800183908151225    10.118.23.4     bms-gdb-az3-04  bond0
9800183908151223    10.118.23.5     bms-gdb-az3-05  bond0
9800183908151220    10.118.23.6     bms-gdb-az3-06  bond0
9800183908151255    10.118.23.7     bms-gdb-az3-07  bond0
9800183908151216    10.118.23.8     bms-gdb-az3-08  bond0
9800183908151230    10.118.23.9     bms-gdb-az3-09  bond0
9800183908151248    10.118.23.10    bms-gdb-az3-10  bond0
9800183908151242    10.118.23.11    bms-gdb-az3-11  bond0
9800183908151245    10.118.23.12    bms-gdb-az3-12  bond0
9800183908151252    10.118.23.13    bms-gdb-az3-13  bond0
9800183908151239    10.118.23.14    bms-gdb-az3-14  bond0
9800183908151238    10.118.23.15    bms-gdb-az3-15  bond0
9800183908151222    10.118.23.16    bms-gdb-az3-16  bond0
9800183908151240    10.118.23.17    bms-gdb-az3-17  bond0
9800183908151241    10.118.23.18    bms-gdb-az3-18  bond0
9800183908151234    10.118.23.19    bms-gdb-az3-19  bond0
9800183908151214    10.118.23.20    bms-gdb-az3-20  bond0
9800183908151212    10.118.23.21    bms-gdb-az3-21  bond0
9800183908151229    10.118.23.22    bms-gdb-az3-22  bond0
9800183908151208    10.118.23.23    bms-gdb-az3-23  bond0
9800183908151210    10.118.23.24    bms-gdb-az3-24  bond0
9800183908151207    10.118.23.25    bms-gdb-az3-25  bond0
21B602125   10.118.23.26    bms-gdb-az3-26  bond0
21B602126   10.118.23.27    bms-gdb-az3-27  bond0
21B602127   10.118.23.28    bms-gdb-az3-28  bond0
21B602128   10.118.23.29    bms-gdb-az3-29  bond0
21B602129   10.118.23.30    bms-gdb-az3-30  bond0
21B602130   10.118.23.31    bms-gdb-az3-31  bond0

EOF

#
#sudo dmidecode -t 1|grep Serial|awk -F" " '{print $3}'
sn=`dmidecode -t 1|grep Serial|awk -F" " '{print $3}'`
bond0_ipaddr=`cat /tmp/ipinfo.csv |grep bond0|grep $sn|awk '{print $2}'`
bond0_gwnet=`echo $bond0_ipaddr|awk -F '.'  '{print $1"."$2"."$3}'`
bond0_gateway=${bond0_gwnet}.62

#bond1_ipaddr=`cat /tmp/ipinfo.csv |grep bond1|grep $sn|awk '{print $2}'`
#bond1_gwnet=`echo $bond1_ipaddr|awk -F '.'  '{print $1"."$2"."$3}'`
#bond1_gateway=${bond1_gwnet}.62

hostname=`cat /tmp/ipinfo.csv |grep $sn| head -n 1|awk '{print $3}'`

#####
#NIC1=`ifconfig -a|grep enp|head -n 2|awk '{print $1}'|awk -F ':' '{print $1}'|head -n 1`
#NIC2=`ifconfig -a|grep enp|head -n 2|awk '{print $1}'|awk -F ':' '{print $1}'|tail -n 1`

####  hostname
old_hostname=`hostname`

hostnamectl set-hostname $hostname
sed -i "s/$old_hostname/$hostname/g" /etc/hosts

#### network
# /etc/sysconfig/network-scripts/
## cfg_bond0_NIC1
## cfg_bond0_NIC2
## cfg_bond1_NIC1
## cfg_bond1_NIC2

## bond0  ################
if [[ "$bond0_ipaddr" != "" ]] ; then

  cp /etc/sysconfig/network-scripts/${cfg_bond0_NIC1} /root/${cfg_bond0_NIC1}_bak${time1}
  cp /etc/sysconfig/network-scripts/${cfg_bond0_NIC2} /root/${cfg_bond0_NIC2}_bak${time1}
  cp /etc/sysconfig/network-scripts/ifcfg-bond0 /root/ifcfg-bond0_bak${time1}

  sed -i s/BOOTPROTO=dhcp/BOOTPROTO=none/g /etc/sysconfig/network-scripts/${cfg_bond0_NIC1}
  sed -i s/BOOTPROTO=dhcp/BOOTPROTO=none/g /etc/sysconfig/network-scripts/${cfg_bond0_NIC2}

  sed -i s/ONBOOT=no/ONBOOT=yes/g /etc/sysconfig/network-scripts/${cfg_bond0_NIC1}
  sed -i s/ONBOOT=no/ONBOOT=yes/g /etc/sysconfig/network-scripts/${cfg_bond0_NIC2}

  test_MASTER_NIC1=`grep "^MASTER=" /etc/sysconfig/network-scripts/${cfg_bond0_NIC1}`
  if [[ "$test_MASTER_NIC1" = "" ]] ; then
    echo "MASTER=bond0" >> /etc/sysconfig/network-scripts/${cfg_bond0_NIC1}
  fi
  test_MASTER_NIC2=`grep "^MASTER=" /etc/sysconfig/network-scripts/${cfg_bond0_NIC2}`
  if [[ "$test_MASTER_NIC2" = "" ]] ; then
    echo "MASTER=bond0" >> /etc/sysconfig/network-scripts/${cfg_bond0_NIC2}
  fi

  test_SLAVE_NIC1=`grep "^SLAVE=" /etc/sysconfig/network-scripts/${cfg_bond0_NIC1}`
  if [[ "$test_SLAVE_NIC1" = "" ]] ; then
  echo "SLAVE=yes" >> /etc/sysconfig/network-scripts/${cfg_bond0_NIC1}
  fi

  test_SLAVE_NIC2=`grep "^SLAVE=" /etc/sysconfig/network-scripts/${cfg_bond0_NIC2}`
  if [[ "$test_SLAVE_NIC2" = "" ]] ; then
  echo "SLAVE=yes" >> /etc/sysconfig/network-scripts/${cfg_bond0_NIC2}
  fi

  test_CONTROLLED_NIC1=`grep "^NM_CONTROLLED=" /etc/sysconfig/network-scripts/${cfg_bond0_NIC1}`
  if [[ "$test_SLAVE_NIC1" = "" ]] ; then
  echo "NM_CONTROLLED=no" >> /etc/sysconfig/network-scripts/${cfg_bond0_NIC1}
  fi

  test_CONTROLLED_NIC1=`grep "^NM_CONTROLLED=" /etc/sysconfig/network-scripts/${cfg_bond0_NIC2}`
  if [[ "$test_SLAVE_NIC2" = "" ]] ; then
  echo "NM_CONTROLLED=no" >> /etc/sysconfig/network-scripts/${cfg_bond0_NIC2}
  fi

####
cat > /tmp/bond0_tmp << EOF
DEVICE=bond0
TYPE=Bond
NAME=bond0
BONDING_MASTER=yes
BOOTPROTO=static
ONBOOT=yes
NM_CONTROLLED=no
IPADDR=XXXBOND0_IPXXX
NETMASK=255.255.255.192
GATEWAY=XXXBOND0_GWXXX
BONDING_OPTS="mode=4 miimon=100 lacp_rate=1 xmit_hash_policy=1"
DELAY=0
EOF
####
  cat /tmp/bond0_tmp > /etc/sysconfig/network-scripts/ifcfg-bond0
  sed -i s/XXXBOND0_IPXXX/$bond0_ipaddr/g /etc/sysconfig/network-scripts/ifcfg-bond0

  is_2nic=`cat /tmp/ipinfo.csv |grep $sn |wc -l`
  if [[ "$is_2nic" != 2 ]] ; then
   # only one nic
    sed -i s/XXXBOND0_GWXXX/$bond0_gateway/g /etc/sysconfig/network-scripts/ifcfg-bond0
  else
   # have two nics
    sed -i '/XXXBOND0_GWXXX/d' /etc/sysconfig/network-scripts/ifcfg-bond0
  fi

else
  echo "bond0_ipaddr is None  ,nothing to do"
fi
############# bond0 end ##########

#### bond1  ##############
#if [[ "$bond1_ipaddr" != "" ]] ; then
#  cp /etc/sysconfig/network-scripts/${cfg_bond1_NIC1} /root/${cfg_bond1_NIC1}_bak${time1}
#  cp /etc/sysconfig/network-scripts/${cfg_bond1_NIC2} /root/${cfg_bond1_NIC2}_bak${time1}
#  cp /etc/sysconfig/network-scripts/ifcfg-bond1 /root/ifcfg-bond1_bak${time1}
#  sed -i s/BOOTPROTO=dhcp/BOOTPROTO=none/g /etc/sysconfig/network-scripts/${cfg_bond1_NIC1}
#  sed -i s/BOOTPROTO=dhcp/BOOTPROTO=none/g /etc/sysconfig/network-scripts/${cfg_bond1_NIC2}
#  sed -i s/ONBOOT=no/ONBOOT=yes/g /etc/sysconfig/network-scripts/${cfg_bond1_NIC1}
#  sed -i s/ONBOOT=no/ONBOOT=yes/g /etc/sysconfig/network-scripts/${cfg_bond1_NIC2}
#  test_MASTER_NIC1=`grep "^MASTER=" /etc/sysconfig/network-scripts/${cfg_bond1_NIC1}`
#  if [[ "$test_MASTER_NIC1" = "" ]] ; then
#    echo "MASTER=bond1" >> /etc/sysconfig/network-scripts/${cfg_bond1_NIC1}
#  fi
#  test_MASTER_NIC2=`grep "^MASTER=" /etc/sysconfig/network-scripts/${cfg_bond1_NIC2}`
#  if [[ "$test_MASTER_NIC2" = "" ]] ; then
#    echo "MASTER=bond1" >> /etc/sysconfig/network-scripts/${cfg_bond1_NIC2}
#  fi
#  test_SLAVE_NIC1=`grep "^SLAVE=" /etc/sysconfig/network-scripts/${cfg_bond1_NIC1}`
#  if [[ "$test_SLAVE_NIC1" = "" ]] ; then
#  echo "SLAVE=yes" >> /etc/sysconfig/network-scripts/${cfg_bond1_NIC1}
#  fi
#  test_SLAVE_NIC2=`grep "^SLAVE=" /etc/sysconfig/network-scripts/${cfg_bond1_NIC2}`
#  if [[ "$test_SLAVE_NIC2" = "" ]] ; then
#  echo "SLAVE=yes" >> /etc/sysconfig/network-scripts/${cfg_bond1_NIC2}
#  fi
#  test_CONTROLLED_NIC1=`grep "^NM_CONTROLLED=" /etc/sysconfig/network-scripts/${cfg_bond1_NIC1}`
#  if [[ "$test_SLAVE_NIC1" = "" ]] ; then
#  echo "NM_CONTROLLED=no" >> /etc/sysconfig/network-scripts/${cfg_bond1_NIC1}
#  fi
#  test_CONTROLLED_NIC1=`grep "^NM_CONTROLLED=" /etc/sysconfig/network-scripts/${cfg_bond1_NIC2}`
#  if [[ "$test_SLAVE_NIC2" = "" ]] ; then
#  echo "NM_CONTROLLED=no" >> /etc/sysconfig/network-scripts/${cfg_bond1_NIC2}
#  fi

####
#cat > /tmp/bond1_tmp << EOF
#DEVICE=bond1
#TYPE=Bond
#NAME=bond1
#BONDING_MASTER=yes
#BOOTPROTO=static
#ONBOOT=yes
#NM_CONTROLLED=no
#IPADDR=XXXBOND1_IPXXX
#NETMASK=255.255.255.0
#GATEWAY=XXXBOND1_GWXXX
#BONDING_OPTS="mode=4 miimon=100 lacp_rate=1 xmit_hash_policy=1"
#DELAY=0
#EOF
####
#  cat /tmp/bond1_tmp > /etc/sysconfig/network-scripts/ifcfg-bond1
#  sed -i s/XXXBOND1_IPXXX/$bond1_ipaddr/g /etc/sysconfig/network-scripts/ifcfg-bond1
#  sed -i s/XXXBOND1_GWXXX/$bond1_gateway/g /etc/sysconfig/network-scripts/ifcfg-bond1
#

#else
#  echo "bond1_ipaddr is None  ,nothing to do"
#fi
################## bond1 end #########

#sed -i s/NICA/$NIC1/g /etc/network/interfaces
#sed -i s/NICB/$NIC2/g /etc/network/interfaces
#sed -i s/hostip/$ipaddr/g /etc/network/interfaces
#sed -i s/gatewayip/$gateway/g /etc/network/interfaces

###################
echo "$time1" > /tmp/ifcfg_change_$time1.txt
echo "bond0 = $bond0_ipaddr" >> /tmp/ifcfg_change_$time1.txt
#echo "bond1 = $bond1_ipaddr" >> /tmp/ifcfg_change_$time1.txt
#

######
> /tmp/ifcfg_return_$time1.sh
echo "#!/bin/bash" >> /tmp/ifcfg_return_$time1.sh
echo "cp -f /root/${cfg_bond0_NIC1}_bak${time1} /etc/sysconfig/network-scripts/${cfg_bond0_NIC1}" >> /tmp/ifcfg_return_$time1.sh
echo "cp -f /root/${cfg_bond0_NIC2}_bak${time1} /etc/sysconfig/network-scripts/${cfg_bond0_NIC2}" >> /tmp/ifcfg_return_$time1.sh
echo "cp -f /root/ifcfg-bond0_bak${time1} /etc/sysconfig/network-scripts/ifcfg-bond0" >> /tmp/ifcfg_return_$time1.sh
#echo "cp -f /root/${cfg_bond1_NIC1}_bak${time1} /etc/sysconfig/network-scripts/${cfg_bond1_NIC1}" >> /tmp/ifcfg_return_$time1.sh
#echo "cp -f /root/${cfg_bond1_NIC2}_bak${time1} /etc/sysconfig/network-scripts/${cfg_bond1_NIC2}" >> /tmp/ifcfg_return_$time1.sh
#echo "cp -f /root/ifcfg-bond1_bak${time1} /etc/sysconfig/network-scripts/ifcfg-bond1" >> /tmp/ifcfg_return_$time1.sh
echo "systemctl restart network.service" >> /tmp/ifcfg_return_$time1.sh

######
echo "wating restart network"
systemctl restart network.service 

# dns config
PROD1A="*az1*"
PROD1B="*az2*"
PROD1C="*az3*"

DNS_PATH="/etc/resolv.conf"

case ${hostname} in
${PROD1A})
echo "search ecaprodbj1.ecaprod.evercloud.io" > $DNS_PATH
echo "nameserver 10.116.21.62" >> $DNS_PATH
ping -W 1 -c 1 ntp.eca.prod.cebbank &> /dev/null
;;

${PROD1B})
echo "search ecaprodbj1.ecaprod.evercloud.io" > $DNS_PATH
echo "nameserver 10.117.22.62" >> $DNS_PATH
ping -W 1 -c 1 ntp.eca.prod.cebbank &> /dev/null
;;

${PROD1C})
echo "search ecaprodbj1.ecaprod.evercloud.io" > $DNS_PATH
echo "nameserver 10.118.23.62" >> $DNS_PATH
ping -W 1 -c 1 ntp.eca.prod.cebbank &> /dev/null
;;
*)
esac

# ntp
cat >> /etc/ntp.conf << EOF
server ntp1.ecaprod.evercloud.io minpoll 4 maxpoll 4 prefer
server ntp2.ecaprod.evercloud.io minpoll 4 maxpoll 4
driftfile /var/lib/ntp/drift/ntp.drift
EOF

systemctl restart ntpd
systemctl enable ntpd

ntpq -p

# stop service
systemctl stop firewalld
systemctl disable firewalld
systemctl stop NetworkManager
systemctl disable NetworkManager

sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
setenforce 0

# ssh
sed -i "s/#Port 22/Port 16022/g" /etc/ssh/sshd_config
systemctl restart sshd

echo done
还没收到回复