XenServer的补丁安装如果通过XenCenter的话,没有办法很多台主机同时进行,而且XenCenter有些局限,在XenServer的XAPI服务启动过慢的时候,实际补丁安装成功,但是XenCenter还是提示安装失败等。
所以,本文章主要是介绍使用HTTP Server和Bash脚本来进行自动化安装的方法,其实,目前发现的有两种方法。一种是讨巧的方法,安装完所有补丁,然后只重启一次。另外一种方法就是严格按照XenServer的要求,安装每个补丁,根据补丁的需求来决定是否需要重启XAPI或者重启服务器,或者是不需要做任何操作。
这里只介绍正规的,严格安装XenServer要求来进行补丁安装的方法和脚本。
为了能够下载脚本和补丁文件,我们需要一台Web Server,然后把脚本和XS补丁全部放到该目录下(假设是根目录/有些还需要为.xsupdate设置MIME type)。然后首先我们需要从XS下载初始化脚本(Startup.sh)并执行即可。该脚本负责自动下载XS更新,根据需要重启服务或者主机等,最后安装成功后,执行清理任务。
startup.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #!/bin/bash WEB_SERVER=172.16.10.151 function log() { TIME=$(date +“%b %d %k:%M:%S”) echo $TIME” auto_patch “$1 >>/var/log/messages } #download patches mkdir /updates cd /updates for patch in XS602E004 XS602E009 do log “downloading patch $patch …” wget http://$WEB_SERVER/$patch.xsupdate done #download patch.sh log “downloading patch.sh …” wget http://$WEB_SERVER/patch.sh -O /tmp/patch.sh chmod 777 /tmp/patch.sh #setup patch.sh to run on bootup ln –s /tmp/patch.sh /etc/rc3.d/S99autopatch #start installing patches log “starting install patches” bash /tmp/patch.sh |
patch.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | #!/bin/bash function log() { TIME=$(date +“%b %d %k:%M:%S”) echo $TIME” auto_patch “$1 >>/var/log/messages } #wait server to be ready log “needing wait 120s until server is ready” sleep 60 sleep 60 #HostUUID HOSTUUID=$(xe host–list —minimal) #install patches for patch in `ls /updates`; do log “uploading update $patch …” PATCHUUID=$(xe patch–upload file–name=/updates/$patch) sleep 10 log “installing update $patch …” xe patch–apply host–uuid=$HOSTUUID uuid=$PATCHUUID rm –f /updates/$patch sleep 30 log “get post patch action” PATCHACTION=$(xe patch–list uuid=$PATCHUUID params=after–apply–guidance —minimal) if [ “$PATCHACTION” == “restartXAPI” ] then log “PatchAction : restarting XAPI” /opt/xensource/bin/xe–toolstack–restart sleep 60 elif [ “$PATCHACTION” == “restartHost” ] then log “PatchAction : reboot” reboot; sleep 60 fi done #cleanup log “patches have been installed, now cleanup” cd / rm –f /etc/rc3.d/S99autopatch rm –rf /updates rm –f /tmp/*.sh |
用法参考(Usage):
- HTTP Server准备好,以上两个脚本和所有补丁文件放置到根目录
- 修改startup中的WEB_SERVER地址和补丁列表
- 从console或者SSH登陆XS
- 下载startup.sh:wget http://WEB_SERVER_IP/startup.sh
- 设置可执行权限:chmod 777 startup.sh
- 执行:./startup.sh
- 剩下的就可以让脚本去自动执行了
排错(Troubleshooting):
脚本执行的流程日志写入到/var/log/messages,所以,如果需要排错,可以查看该日志中脚本执行流程是否正确。
1 | grep –i auto_patch /var/log/messages |
如果碰到任何问题,请及时反馈,以便对脚本进行改进。