(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:
- quando um ser humano aperta o botão,
- puxe o ramo A do repositório de controle de versão B
- execute o comando C para compilá-lo
- copie os binários D para os servidores E1 a E10
- 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!