Implementar nosso próprio software usando o Puppet?

8

(Peço desculpas antecipadamente pela estupidez nesta questão. Normalmente sou um programador, não um administrador de sistemas, mas resolvi automatizar algumas coisas e limpar algumas outras coisas que são automatizadas, mas não em a maneira mais bonita: -)

Eu tenho procurado em várias ferramentas para automação de implantação de software para um monte de servidores, como cfengine, Puppet e Chef. Até agora, o Puppet parece o mais atraente, mas eu certamente não me comprometi com nada ainda.

Todas essas ferramentas parecem capazes de manter um bom número de servidores atualizados com o software pré-empacotado .

O que eu não entendo é: como alguém usa uma ferramenta (como o Puppet) para gerenciar implantações de nosso próprio software interno? Eu acho que estou perdido porque eu vi milhares de tutoriais mostrando como manter o Apache ensure => latest (que é muito legal), mas nada que corresponda ao meu caso de uso hoje, que é algo mais parecido com:

  1. quando um ser humano aperta o botão,
  2. puxe o ramo A do repositório de controle de versão B
  3. execute o comando C para compilá-lo
  4. copie os binários D para os servidores E1 a E10
  5. em cada servidor, execute o comando F para que todas as alterações entrem em vigor

Puppet parece ótimo, e eu vejo totalmente a vantagem da configuração declarativa e idempotente de alguns shell scripts, mas eu não vi nenhum tutorial para "você quer atualizar seus shell scripts para Puppet (ou Chef, ou cfengine) aqui está o que você deve fazer ". Existe uma coisa dessas? É óbvio para outras pessoas como pegar as coisas fornecidas nos documentos da Marionete e replicar o comportamento que eu quero? Eu não estou entendendo?

O que parece para mim, até agora, é que o ser humano (# 1) empacotaria manualmente o software (# 2 e # 3) externo ao Puppet, atualizaria manualmente a configuração do Puppet, o que acionaria o Puppet para atualizar os servidores ... talvez? (Estou um pouco confuso aqui, como tenho certeza que você pode dizer.)

Obrigado!

    
por Ken 23.12.2010 / 03:42

3 respostas

5

Usamos fantoches, mas não os usamos para nossas implantações de aplicativos. Como você disse, você poderia empacotar seu software em debs ou rpms, configurar seu repositório privado em todos os lugares e usar fantoches para controlar versões, mas você ainda está à espera de aguardar a próxima atualização de 30 minutos em todos os seus servidores. p>

O que eu faria (e isso é próximo do que fazemos, mas usamos rails, então não há etapa de compilação):

  • Use o fantoche para configurar tudo no servidor, exceto o próprio aplicativo. Dependências, servidores web, usuários, caminhos, etc.
  • Faça com que seu servidor de criação automatizado (bambu, hudson, cruise control etc.) coloque os artefatos compilados em um gerenciador de repositórios como o Nexus.
  • Use o capistrano para enviar a compilação para seus servidores.

O Chef pode ter mais recursos de envio em tempo real; Eu não estou muito familiarizado com isso.

    
por 23.12.2010 / 05:43
1

As etapas 1 a 3 são geralmente automatizadas em um processo de criação. Normalmente, a saída desse processo passará por um ciclo de teste. Eu empacoto a saída para que ela possa ser implantada em um ambiente de teste de integração. Somente se os testes de integração forem aprovados, as etapas 4 e 5 ocorrerão.

Seu passo 5 implica em uma interrupção de implantação. Para algo como o apache, isso pode ser tratado por desligamento e reinício durante a rotação de log. Um script crontab pode lidar com isso. Se você puder manipular alterações de rolagem ao longo de um período de aproximadamente uma hora, inclua a reinicialização na etapa de implantação 4. Puppet ou cfengine são ferramentas apropriadas para a etapa 4. Isso pode ser acionado ao atualizar o repositório quando os testes de integração passarem.

    
por 23.12.2010 / 05:43
1

Procure receitas de fantoches e você encontrará toneladas de roteiros prontos para produção. Sim, você teria que empacotar manualmente o software. Se você está mantendo seu próprio repositório pessoal, pode usar o último sinalizador = = gt; Em seguida, escreva uma receita para dizer ao boneco para instalar o software. A receita precisaria ser colocada no servidor mestre de onde seria propagada para os escravos.

    
por 23.12.2010 / 05:49