Como gerenciar mudanças no conjunto de máquinas virtuais clonadas?

4

Estou tentando configurar um modelo viável para o desenvolvimento. Eu estou querendo saber se alguém tem recomendações para software de máquina virtual e qual processo a seguir para permitir o seguinte:

  • Os desenvolvedores pegam uma cópia da imagem de ouro de uma máquina virtual e executam o convidado da VM em suas próprias estações de trabalho. (Idealmente, eu não quero pagar pelo hardware / software do servidor para hospedar as VMs centralmente quando as estações de trabalho dos desenvolvedores têm toda essa potência inativa)
  • A imagem de ouro da máquina virtual é atualizada - usando discos diferenciais, snapshots ou recurso equivalente no fornecedor de VM escolhido - cada VM copiada do desenvolvedor é atualizada com as novas alterações (Idealmente, não estou implantando um todo imagem - apenas os diffs da imagem de ouro)
  • É grátis ( talvez pensamento positivo)
  • Como mencionado antes - não é uma solução baseada em servidor (além de armazenar a imagem de ouro e se difunde na rede em algum lugar) - Eu não quero mais servidores e software para gerenciar
  • Deve suportar convidados de 64 bits (o Virtual PC e o MS Virtual Server estão fora ...)

Isso é um sonho?

Devido a minhas restrições, acho que posso escolher Workstation VMWare ou VirtualBox . Mas eu não acho que eles farão exatamente o que eu quero.

Como um compromisso - eu poderia usar o Hyper-V ou o ESX para criar modelos de VM, criar muitos clones dos modelos - e de alguma forma distribuir esses clones para estações de trabalho individuais?

Minha ideia com a implantação de discos / snapshots diferenciais é que isso é prático semanalmente - para implantar uma atualização em cada VM de desenvolvedor individual que é então mesclada com a imagem base. A "imagem de ouro" teria os diffs mesclados também - de modo que todas as VMs correspondessem sem se dar ao trabalho de excluir os clones existentes e clonar a partir de um modelo atualizado. Você poderia continuar executando a mesma VM - basta aplicar discos / snapshots diferentes.

    
por Adam 17.08.2010 / 03:23

2 respostas

3

Instantâneos: abordagem preferencial

  1. Crie uma VM base em sua máquina. Para os seus propósitos, você estará perfeitamente bem usando um arquivo de imagem de disco com provisionamento compacto / thin, portanto, não use um arquivo de tamanho fixo.

  2. Encerre sua instância da VM base. (Suspender / hibernar é não suficiente.)

  3. Tire uma foto instantânea.

  4. Distribua para os desenvolvedores após ter tirado o instantâneo.

  5. Quando chegar a hora, inicie a VM base e atualize-a. Quaisquer alterações feitas serão gravadas em novos arquivos "delta", que serão tão grandes quanto as alterações acumuladas feitas desde que você tirou o instantâneo. Como você tirou um instantâneo, esse arquivo de imagem de disco enorme permanecerá 100% inalterado.

  6. Encerre sua instância da VM base. (Suspender / hibernar é não suficiente.)

  7. Se você tiver feito grandes alterações (por exemplo, instalando um service pack grande), considere obter um instantâneo adicional now para não precisar transferir novamente o instantâneo atual ao criar sua próxima atualização.

  8. Durante a noite, (a) reinicialize cada máquina do desenvolvedor ou elimine programaticamente o processo do hipervisor em cada máquina do desenvolvedor (não, os desenvolvedores lembrarão de fechá-los) e então (b copie os arquivos alterados usando ROBOCOPY / MIR ou algo semelhante.

É claro que, para que isso funcione, você precisará transferir todos arquivos alterados associados à VM, o que pode incluir arquivos de configuração contendo metadados sobre os instantâneos, além do instantâneo / delta arquivos próprios. Você também precisará garantir que, em cada máquina de desenvolvedor, a VM seja armazenada exatamente no mesmo local em que está em sua própria máquina.

Rsync: abordagem alternativa

Uma abordagem alternativa seria usar discos virtuais de tamanho fixo, não snapshots e um cliente / servidor rsync como DeltaCopy para copiar apenas as partes alteradas. Esta não é a abordagem preferida porque:

  1. Seria necessário instalar o software rsync em cada máquina do desenvolvedor.

  2. O processo de cópia real levaria mais tempo, apesar de não haver mais dados sendo transferidos, porque o rsync precisaria analisar todo o arquivo de disco virtual para determinar quais partes precisam ser transferidas.

Conclusão: Você poderia usar o rsync para isso, mas parece um exagero se o seu hipervisor suportar snapshots.

    
por 20.08.2010 / 07:31
0

parece que você precisa de uma ferramenta de gerenciamento de configuração. este seria um repositório central onde você protege a configuração e os clientes (seu windows vms) podem obter novas configurações.

como eu estou usando o Linux, não tenho certeza o quão suave isso é executado com o Windows, mas existem soluções que suportam janelas. dê uma olhada no este artigo wiki. tem uma boa soma.

    
por 20.08.2010 / 16:15