Como gerenciar configuração e lançamento automático de 20 máquinas virtuais

5

Eu tenho um servidor de compilação TeamCity, com cerca de 20 "agentes de compilação", máquinas Windows e MacOS.

Muitas vezes, eu preciso instalar uma versão mais recente do XCode ou VisualStudio ou alguma outra ferramenta. Ter que fazer isso em todas as máquinas manualmente é entediante e propenso a erros. Estou tentando descobrir qual é a melhor maneira de conseguir o seguinte:

  • facilita a alteração de uma configuração do sistema, sem ter que fazê-lo em todas as máquinas manualmente.
  • facilita a adição de uma nova máquina ao grupo.
  • garanta que as máquinas sejam o mais idênticas possível

Os trabalhos que estas máquinas estão executando são relativamente pesadas, consumindo 8 núcleos, e são muito pesados em IO. Tudo bem se a solução incluir gastar dinheiro.

    
por Lucas Meijer 24.07.2010 / 00:39

3 respostas

1

Existem algumas orientações que você pode seguir com isso. Isso dependerá da infraestrutura que você possui e do software pelo qual você está disposto a pagar e / ou implantar.

Qual é o propósito de ter tantas máquinas de compilação separadas? É para manter projetos de código isolados uns dos outros, ou para maximizar a velocidade de compilação com recursos adicionais? Ou as máquinas de construção são realmente as estações de trabalho do cliente em sua rede, que são usadas para outros propósitos além de construir?

Se é para manter os ambientes de construção isolados, a virtualização é um bom caminho a seguir. Você poderá elevar suas 20 máquinas de construção como VMs individuais sem o incômodo extra de comprar / configurar hardware para cada uma delas.

Por outro lado, se for para dimensionamento de desempenho, agrupar as máquinas de compilação nas VMs não faz tanto sentido, já que as VMs em um host disputam a disponibilidade de CPU, RAM e disco desse host. É melhor adicionar a quantidade máxima de núcleos de CPU, Gbs RAM e fusos de disco, conforme necessário, adicionando unidades de hardware adicionais.

Quanto ao requisito de atualização de pacotes de software em todas as máquinas:  - Para o gerenciamento unificado de software em várias máquinas Windows sem exigir uma nova implantação do sistema operacional, confira o System Center Config Manager da Microsoft e o System Center Essentials. Eles parecem adequados às suas necessidades: link  - Para a implantação de todo o sistema, onde você faria uma alteração em uma 'imagem' do sistema e, em seguida, reimplantaria essa imagem em suas máquinas de compilação, você pode fazer isso com VMs usando recursos incorporados no produto de virtualização que estiver usando. 'Modelos' no ESX ou no Hyper-V. Como alternativa, você poderia examinar uma solução de compilação do PXE-boot, como os serviços de Implantação do Windows.

Qualquer que seja a maneira como você for com isso, seu maior ponto problemático provavelmente será o uso misto de Windows e MacOS para suas máquinas de construção. Um sistema operacional padrão em todos eles é praticamente um pré-requisito para poder atualizá-los de maneira unificada.

    
por 26.07.2010 / 02:38
3

link

Não tenho certeza sobre a extensão do suporte do Windows, mas o FAQ menciona o suporte básico do Windows na versão mais recente. Esta ferramenta seria perfeita se estivéssemos falando Linux, então se a implementação do Windows for comparável, provavelmente seria perfeita. Quanto às máquinas Mac, elas são baseadas no BSD, então você provavelmente poderia usar o lado do Linux do fantoche com essas também.

Eu fiz coisas parecidas com o que você mencionou no Linux usando o Puppet. Na marionete, você cria uma política de site por meio de declarações de como as coisas devem se encaixar. Em uma configuração normal, você tem um mestre de marionetes com a política do site que é obtida em uma frequência a partir das estações de trabalho de fantoches \ máquinas. Os "bonecos" olham para os requisitos que eles encontraram e depois são informados sobre o que devem fazer com a política do Mestre de Marionetes. Atualizações contínuas seria uma modificação simples da política do Mestre de Marionetes, mas leve isso com um pouco de sal. Eu não sei a extensão da funcionalidade do Windows.

Outro popular é o CfEngine: link

link

link

Eu não usei o CfEngine, mas é bastante popular.

    
por 26.07.2010 / 02:21
1

Um produto semelhante ao Acronis Snap Deploy permite que você distribua atualizações para o seu IDE, etc., sem muito dor de cabeça. Também é possível personalizar a compilação para nós de extremidade específicos, para que você possa pré-carregar drivers de dispositivo, mas não há compatibilidade com o OSX (você pode tentar fazê-lo sair do Boot Camp ou algo assim).

Se você tivesse tempo para mexer um pouco, poderia tentar uma solução gratuita como o WPKG .

    
por 26.07.2010 / 02:54