Estamos entrando em uma discussão interessante e estamos caindo em dois campos. Estou interessado em qualquer problema em particular com a idéia ou as dicas que podemos estar perdendo. Realmente, qualquer coisa que possa nos ajudar a tomar uma decisão ou apontar coisas pelas quais não estamos respondendo. Eu sei que isso contorna a regra "sem opinião" um pouco mais de perto, mas espero que ainda seja uma pergunta aceitável. Desculpe pelo tamanho também, há um pouco de nuance.
1) Um lado (o meu - não estou sem viés) considera o modelo de servidor imutável muito interessante para os sistemas em nuvem. Para esse fim, prototipamos a transferência de todos os componentes de nossa infraestrutura para o Docker. Nossos aplicativos personalizados são construídos via Jenkins diretamente nas imagens do Docker que são implantadas em um Registro do Docker local. Em seguida, criamos um grande conjunto de funções Ansible e um manual capaz de acessar um servidor vazio, instalar o Docker e depois solicitar ao Docker que instale todos os contêineres, conforme necessário. Após alguns minutos, todo o aplicativo e toda a infraestrutura de suporte estão conectados e funcionando - registro, monitoramento, criação / população de banco de dados, etc. A máquina finalizada é um ambiente de controle de qualidade ou desenvolvimento independente, com uma cópia exata do inscrição. Nosso plano de dimensionar isso seria criar novos Playbooks para criar novos servidores da AWS a partir de uma AMI confiável (provavelmente uma imagem muito simples), fazer implantações contínuas do aplicativo de produção para lidar com o gerenciamento e as liberações de configuração e, geralmente, nunca editar servidores novamente - apenas faça-os novamente. Não estou preocupado em conseguir o que descrevi funcionando na prática - apenas se for um modelo razoável.
2) O outro campo quer usar o Puppet para lidar com o gerenciamento de configuração, Ansible para implantar nossos aplicativos personalizados que são tarballs gerados em nosso processo de compilação, o Foreman para lidar com o acionamento e o gerenciamento do processo como um todo e o Katello para fazer alguma quantidade de base gerenciamento de imagens. As versões envolveriam a alteração da configuração do Puppet, conforme necessário, e a Ansible implantaria componentes atualizados com alguma coordenação do Foreman. Os servidores seriam construídos razoavelmente rapidamente se precisássemos de novos, mas a intenção não é torná-los descartáveis como parte do processo padrão. Isso está mais próximo do modelo de servidor phoenix, embora com uma vida útil longa.
Então, minha pergunta realmente se resume a isso: o modelo de servidor imutável com as ferramentas como as descrevi acima é realmente tão realista quanto parece? Adoro a idéia de que nosso processo de preparação pode literalmente criar um clone inteiro dos aplicativos ao vivo, deixe o controle de qualidade martelar e depois inverter o armazenamento do banco de dados e algumas configurações de DNS para torná-lo ativo.
Ou o modelo de servidor imutável falha na prática? Temos uma boa experiência com os ambientes da AWS e da nuvem, então essa não é realmente a preocupação - mais uma questão de como obter um aplicativo razoavelmente sofisticado implantado de forma confiável no futuro. Isso é de particular interesse, pois lançamos com bastante frequência.
Temos o Ansible fazendo a maioria das coisas necessárias, exceto a criação de servidores EC2 para nós e isso não é difícil. Estou tendo problemas para entender por que você realmente precisa de Puppet / Foreman / Katello neste modelo. O Docker é muito mais limpo e simples do que os scripts de implantação personalizados em qualquer ferramenta disponível no mercado. O Ansible parece muito mais simples de usar do que o Puppet quando você para de se preocupar em configurá-los no local e simplesmente constrói-os novamente com a nova configuração. Sou fã do diretor do KISS - particularmente em automação, onde a Lei de Murphy é desenfreada. Quanto menos máquinas, melhor a IMO.
Quaisquer pensamentos / comentários ou sugestões sobre a abordagem serão muito apreciados!