自动升级类似的虚拟机客户操作系统

是否可以处理仅在configurationpipe理方面有所不同的VM guest虚拟机的自动升级? 我在询问有助于实现的一般或特定技术。 简而言之,我有一些CentOS / Debian安装可以被认为是一个干净的安装+木偶configuration。 我希望以自动方式执行yum update或等效( apt-get upgrade )或安装软件包X.我希望通过使用我的VM模板,在那里升级操作系统,然后重新部署每个VM基于模板一个接一个(在我眼球模板,以确保没有什么破)。

我不在乎它是ESXi还是XenServer,还是openvz或其他什么东西。 我不介意必须安装第三方工具。 我知道XenServer滚动池升级,但这仅适用于主机afaik。

总之,你想要build立一个模板。 按照您的维护计划,将其转换为虚拟机,启动新的虚拟机,运行sudo yum -y update ; sudo shutdown -h now sudo yum -y update ; sudo shutdown -h now

一旦closures,转换回活动虚拟机的模板。 由于您的configurationpipe理已经就绪,您只需构build一个与旧的清单匹配的新VM,然后将configuration滚动到新configuration,交换DNSlogging并杀死旧configuration。

我还没有看到一个固定工具来执行这个工作,但是VMWare PowerCLI(VMWare VCenter的PowerShell插件)可以使用Set-VM -ToTemplateSet-Template -ToVM命令[1]在模板和虚拟机之间进行转换。

一旦启动并运行虚拟机(模板的实时表示),就可以使用Invoke-VMScript命令[2]向客户Invoke-VMScript命令,例如发出yum命令[3]。


我正在玩这个想法,并有一个Q&D周末黑客。 我没有testing过这个脚本,而且几乎肯定是错误的,但是这里是让你开始的基本想法。 请注意,它有一些不好的想法,比如在脚本中包含密码,或者为虚拟机和模板假设一个平面名称空间。

 #################################
 ##将VMWare模板转换为正在运行的模板
 ##系统,应用维护,然后转换
 ##回到模板
 ##
 ##注意,这天真地不做任何错误 - 
 ##检查并没有指定很多信息
 ##
 ##请适应您的环境
 ##
 #################################


 Param {
     [string] $ templatename;
 }

 $ RHELPasswd ='P @ $$ w0rd!'  ;

如果(!$ templatename){
    写入错误“请在命令行上传递模板的名称”;
    退出(-1);
 }

 if(Get-Template -Name $ templatename){
     $ vm = Set-Template -Template $ templatename -ToVM;
     $ guestscript ='sudo yum -y update;  sudo shutdown -h now';
     Invoke-VMScript -VM $ vm -ScriptText $ guestscript -GuestUser'root'-GuestPassword $ RHELPasswd;
     Get-VM $ vm | Set-VM -ToTemplate -name $ templatename;
 }


1: http : //www.mikelaverick.com/2014/06/back-to-basics-creating-and-deploying-templates-with-powercli-part-7/ [4]和[5]
2: https : //www.vmware.com/support/developer/PowerCLI/PowerCLI41U1/html/Invoke-VMScript.html
3: https : //access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/ch-yum.html#sec-Checking_For_and_Updating_Packages
4: https : //www.vmware.com/support/developer/PowerCLI/PowerCLI41U1/html/Set-VM.html
5: https : //www.vmware.com/support/developer/PowerCLI/PowerCLI41U1/html/Set-Template.html