Atualização automática de sistemas operacionais convidados de VM semelhantes

2

É possível lidar com upgrades automáticos de convidados da VM, que diferem apenas em termos de gerenciamento de configuração? Estou perguntando sobre tecnologias gerais ou específicas que facilitam isso. Resumidamente, eu tenho um número de instalações CentOS / Debian que podem ser consideradas como uma instalação limpa + configuração de fantoches. Desejo executar, de maneira automatizada, um yum update ou equivalente ( apt-get upgrade ) ou a instalação do pacote X. Quero que isso ocorra tomando meu modelo de VM, atualizando o sistema operacional lá e reimplantando cada VM baseado em esse template um por um (depois eu olho o template para garantir que nada está quebrado).

Eu não me importo se é ESXi ou XenServer ou openvz ou qualquer coisa entre eles. Não me importo de ter que instalar ferramentas de terceiros. Estou ciente dos upgrades de pooling do XenServer, mas isso é apenas para os anfitriões afaik.

    
por darvids0n 19.12.2014 / 06:26

1 resposta

4

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 ;
}

1: link [4] e [5]
 2: link
 3: link
 4: link
 5: link

    
por 19.12.2014 / 06:55