Print

通过ilorest使用SPP批量刷新HPE ProLiant Gen8/Gen9/Gen10服务器的所有固件版本

组网及说明

用户需求:如何使用SPP批量升级Gen8/Gen9/Gen10 服务器的所有固件版本

软件版本: ilorest-2.3.X以上版本

系统版本:
Red Hat Enterprise Linux 5 Server (x86-64)
Red Hat Enterprise Linux 6 Server (x86-64)
Red Hat Enterprise Linux 7 Server
SUSE Linux Enterprise Server 11 (AMD64/EM64T)
SUSE Linux Enterprise Server 12

问题描述

如何使用SPP批量升级Gen8/Gen9/Gen10 服务器的所有固件版本

过程分析

1. HPE官网下载最新ilorest工具,安装在任意redhat5/6/7或者suse11/12linux系统上。

    https://support.hpe.com/hpsc/swd/public/detail?swItemId=MTX_f738de6ff67a44579ba3bda458#tab-history

    安装命令:rpm -ivh ilorest-2.3.3-7.x86_64.rpm

2. 上传shell脚本和到linux系统,并赋予可执行权限

   chmod +x update_spp.sh

3. 修改iloinfo.csv里面的ilo信息为用户实际信息,并将该文件也上传到linux系统,举例如下:

    其中第一列为iLOIP地址,第二列为iLO的用户名,第三列为iLO的密码。

    [root@localhost ~]# cat iloinfo.csv

    ip,user,password

    10.12.XX.XX,Administrator,password

    10.12.XX.XX,Administrator,password

4. 脚本内容与执行脚本:

#!/bin/bash
#author="xiaojing.zhao@h3c.com"
#script="Batch Update SPP"
#date=`date +%F.%T`

update_spp ()
{
   echo -e "\n================================iLO "$IP"--update spp==================================" >> out.log
   ilorest list --select HpServerBootSettings. -u "$USER" -p "$PASSWD" --url="$IP" | awk '/PersistentBootConfigOrder/,/Type=HpServerBootSettings/{if(i>=1)print x;x=$0;i++}' >> out.log
   ilorest set PersistentBootCOnfigOrder=[CD.Virtual.2.1] --select HpServerBootSettings. --commit -u "$USER" -p "$PASSWD" --url="$IP" >> out.log
   ilorest virtualmedia 2 http://10.12.175.64/FW/SPP2018110.iso --bootnextreset -u "$USER" -p "$PASSWD" --url="$IP" >> out.log
   ilorest reboot ForceRestart -u "$USER" -p "$PASSWD" --url="$IP" >> out.log
}
for LINE in `cat iloinfo.csv | sed '1d'`
do
        IP=`echo $LINE | awk -F, '{print $1}'`
        USER=`echo $LINE | awk -F, '{print $2}'`
        PASSWD=`echo $LINE | awk -F, '{print $3}'`
        #echo "test" $IP
        update_spp
 echo "SPP is starting to update!"
done 

   

 执行脚本命令 ./update_spp.sh

 

  执行脚本后可以登录iLO remove console查看刷新进度(自动刷新)。

 


刷新完成后,自动重启,无需人工干预。


5. 可以查看日志执行情况,在shell脚本的同路径下有个out.log文件

cat out.log

 

 


6. ilo界面查看验证刷新的固件版本

 

 


解决方法

ilorest virtualmedia 2 http://10.12.XX.XX/FW/SPP2018110.iso --bootnextreset -u "$USER" -p "$PASSWD" --url="$IP" >> out.log

--这里的http web服务器是需要自行配置的,然后将SPP的镜像文件放到http web服务器即可。其中--bootnextreset参数表示下次启动自动reset

ilorest set PersistentBootCOnfigOrder=[CD.Virtual.2.1] --select HpServerBootSettings.

这条语句是将CD-ROM设置为第一启动项 (one time boot settings)

--脚本中我以Gen10为例,Gen9测试也同样适用(UEFI Mode)。如下截图所示:


刷新完成自动重启,登录iLO界面验证固件版本即可。


--如果是Gen8的话(Legacy Mode),这里第一启动项属性需要修改为如下内容:

ilorest set Boot/BootSourceOverrideSupported=[Cd] --select=ComputerSystem.


Gen8完整脚本如下,执行方法都一样

#!/bin/bash
#author="xiaojing.zhao@h3c.com"
#script="Batch Update SPP"
#date=`date +%F.%T`

update_spp ()
{
   echo -e "\n================================iLO "$IP"--update spp==================================" >> out.log
   ilorest list --select ComputerSystem. -u "$USER" -p "$PASSWD" --url="$IP" | awk '/Boot=/,/BootSourceOverrideTarget=None/{if(i>=1)print x;x=$0;i++}' >> out.log
   ilorest set Boot/BootSourceOverrideSupported=[Cd] --select=ComputerSystem. --commit -u "$USER" -p "$PASSWD" --url="$IP" >> out.log
   ilorest virtualmedia 2 http://10.12.175.64/FW/SPP2018110.iso --bootnextreset -u "$USER" -p "$PASSWD" --url="$IP" >> out.log
   ilorest reboot ForceRestart -u "$USER" -p "$PASSWD" --url="$IP" >> out.log
}
for LINE in `cat iloinfo.csv | sed '1d'`
do
        IP=`echo $LINE | awk -F, '{print $1}'`
        USER=`echo $LINE | awk -F, '{print $2}'`
        PASSWD=`echo $LINE | awk -F, '{print $3}'`
        #echo "test" $IP
        update_spp
 echo "SPP is starting to update!"
done