Readme
脚本功能:
- 自动化批量安装IB网卡驱动
使用方法:
- 将该脚本上传至linux服务器内
- 将驱动包上传至与脚本同一级目录下
- 在脚本同一级目录下创建nodelist文件,写入待安装节点的带内管理IP,每行一个;
- 脚本赋执行权限
测试环境:
- CentOS7.9/Rocky8.6
注意事项:
- 不同的系统安装命令略有不同,请按照脚本中的注释,根据实际情况进行修改
Script
bash
#!/bin/bash
current_dir="/root"
node_list="${current_dir}/nodelist" #待安装节点管理IP
driver_name="MLNX_OFED_LINUX-xxx-xxx-x86_64.zip" #驱动包名称,根据实际修改
install_dir="${current_dir}/MLNX_OFED_LINUX-xxx-xxx-x86_64" #解压后的路径,根据实际修改
readarray -t ip_address < ${node_list}
count=${#ip_address[@]}
#不同OS安装命令可能不同,根据实际修改,以下以CentOS7.9为例
cat > ${current_dir}/install.sh << EOF
#install deps
yum install -y tk gcc-gfortran tcl make tcsh fuse-libs perl libusbx pciutils lsof
cd ${install_dir}
./mlnxofedinstall --force
/etc/init.d/openibd restart
/etc/init.d/opensmd restart
sleep 5
reboot
EOF
#准备工作;有共享目录该步骤无需执行
for ((i=0; i<$count; i++))
do
######
echo "Start copying to ${ip_address[$i]}"
scp ${current_dir}/install.sh root@${ip_address[$i]}:${current_dir}/
scp ${current_dir}/${driver_name} root@${ip_address[$i]}:${current_dir}/
ssh -n ${ip_address[$i]} "
echo "Start to unzip on ${ip_address[$i]}"
cd ${current_dir}/
# 检查文件是否存在
if [ -f "MLNX_OFED_LINUX-xxx-xxx-x86_64.zip" ]; then
echo "文件存在,开始解压"
unzip MLNX_OFED_LINUX-xxx-x86_64.zip >/dev/null 2>&1
else
echo "文件不存在,请重新拷贝"
fi
"
done
#安装循环,宏观上并行安装
for ((i=0; i<$count; i++))
do
####
ssh -n ${ip_address[$i]} "
echo "Start to install ib driver on ${ip_address[$i]}"
cd ${current_dir}/
# 检查mlnxofedinstall文件是否存在
if [ -f "mlnxofedinstall" ]; then
echo "文件存在,执行操作"
nohup bash install.sh > install.log &
else
echo "文件不存在,请检查"
fi
exit
"
done
echo "Please wait for about 30 minutes"
#设置等待30分,根据实际修改
sleep 1800;
#安装后检查
echo "Start checking installation status"
flag=1
for ((i=0; i<$count; i++))
do
######
ssh -n ${ip_address[$i]} "
if lsmod | grep -q rdma; then
echo "${ip_address[$i]} yes"
flag++
else
echo "${ip_address[$i]} no"
fi
"
done
#检测所有节点安装成功
if [ flag -eq ${count} ];then
echo "Installation successful!"
else
echo "please check"
fi
echo "Installation completed"
每天进步一点点