自动升级类似的 VM 客户操作系统

自动升级类似的 VM 客户操作系统

是否可以处理仅在配置管理方面不同的 VM 客户端的自动升级?我问的是促进这一点的通用或特定技术。简而言之,我有许多 CentOS/Debian 安装,可以将其视为全新安装 + puppet 配置。我希望以自动化方式执行yum update或等效(apt-get upgrade),或安装包 X。我希望通过获取我的 VM 模板、在那里升级操作系统,然后根据重新部署每个 VM 来实现这一点逐个检查模板(在我目视检查模板以确保没有任何损坏之后)。

我不在乎它是 ESXi 还是 XenServer 还是 openvz 或介于两者之间的任何东西。我不介意必须安装第三方工具。我知道 XenServer 滚动池升级,但据我所知这仅适用于主机。

答案1

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

一旦关闭,就从实时虚拟机转换回模板。由于您已经拥有配置管理,因此您只需构建一个与旧虚拟机清单相匹配的新虚拟机,然后将配置转移到新虚拟机,交换 DNS 记录并终止旧虚拟机。

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

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


我正在考虑这个想法,并在周末进行了一次问答。我没有测试过这个脚本,而且它几乎肯定是错误的,但这里有一个基本的想法可以让你开始。请注意,它有一些不好的想法,比如在脚本中包含密码,或者为你的虚拟机和模板假设一个平面名称空间。

#################################
## 将 VMWare 模板转换为正在运行的
## 系统,应用维护,然后转换
## 返回模板
##
## 注意,这根本就不会犯任何错误-
## 检查并且没有指定太多信息
##
## 请适应你的环境
##
#################################


参数 {
    [字符串] $模板名称;
}

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

如果(!$模板名称){
    Write-Error“请在命令行中传递模板的名称”;
    退出(-1);
}

如果(获取模板名称 - 名称 $模板名称){
    $vm = 设置模板-模板 $模板名称-ToVM;
    $guestscript = 'sudo yum -y 更新; sudo shutdown -h now';
    调用-VMScript -VM $vm -ScriptText $guestscript -GuestUser'root' -GuestPassword $RHELPasswd;
    获取虚拟机 $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

相关内容