Em suma, você está querendo criar um modelo. Em sua programação de manutenção, converta-a em uma máquina virtual, inicialize a nova máquina virtual, execute sudo yum -y update ; sudo shutdown -h now .
Quando estiver desativado, converta de volta para um modelo de uma VM ativa. Como você já tem o gerenciamento de configuração no local, você simplesmente criaria uma nova VM correspondente aos manifestos do antigo e rolaria a configuração para a nova, trocaria os registros de DNS e eliminaria o antigo.
Eu não vi uma ferramenta enlatada para executar esse trabalho, mas o VMWare PowerCLI (plug-in do PowerShell para VMWare VCenter) pode converter entre modelos e VMs usando os comandos Set-VM -ToTemplate e Set-Template -ToVM [1].
Uma vez que você tenha a VM ativa (a representação ao vivo do modelo) em funcionamento, você pode emitir comandos para o convidado usando o comando Invoke-VMScript [2], tal como emitindo seus comandos yum [3].
Eu estava brincando com a ideia disso e tenho um hack Q & D de fim de semana. Eu não testei este script, e é quase certamente errado, mas aqui está a idéia básica para você começar. Observe que ele possui algumas ideias ruins, como incluir uma senha em um script ou assumir um espaço de nome simples para suas VMs e Templates.
#################################
## Convert a VMWare template to a running
## system, apply maintenance, then convert
## back to a template
##
## Note, this naively does not do any error-
## checking and does not specify much info
##
## Please adapt to your environment
##
#################################
Param {
[string] $templatename ;
}
$RHELPasswd = 'P@$$w0rd!' ;
if(! $templatename) {
Write-Error "Please pass the name of the template on the command-line" ;
exit(-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 ;
}