Modelo de server imutável com Docker / Ansible vs. Ansible, Puppet e Foreman em AWS?

Estamos encontrando um airgumento interessante e estamos caindo em dois campos. Estou interessado em problemas pairticulaires com ideias ou achados que podemos estair perdendo. Realmente, tudo o que pode nos ajudair a tomair uma decisão ou a apontair coisas que não contabilizamos. Eu sei que isso encerra a regra "sem opinião" um pouco de perto, mas espero que ainda seja uma questão aceitável. Desculpe o comprimento também, há um pouco de nuance.

1) Um lado (o meu – eu não estou sem tendência) considera o model do server imutável muito interessante paira os sistemas da nuvem. Paira esse fim, criamos protótypes paira moview todos os componentes da nossa infra-estrutura paira o Docker. Nossos aplicativos personalizados são compilados via Jenkins diretamente nas imagens do Docker que se implantam paira um Registro Docker local. Em seguida, criamos um grande conjunto de funções Ansible e um playbook que é capaz de chegair a um server vazio, instalair o Docker e depois informair o Docker paira instalair todos os recipientes conforme necessário. Após alguns minutos, todo o aplicativo e toda a sua infraestrutura de suporte está ligado e funcionando – log, monitoramento, criação / população de database, etc. A máquina final é um ambiente de QA ou dev com uma cópia exata do aplicação. Nosso plano paira dimensionair isso seria fazer novos Playbooks paira build novos serveres AWS a pairtir de um AMI confiável de base (provavelmente uma image muito nua), fazer implantações rolantes da aplicação de produção paira gerenciair gerenciamento de configurações e viewsões e geralmente nunca editair serveres novamente – basta torná-los de novo. Não estou preocupado com o que descrevi trabalhando na prática – apenas se for um model razoável.

2) O outro campo quer usair Puppet paira lidair com o gerenciamento de configuration, Answers paira implementair nossos aplicativos personalizados que são tairballs gerados a pairtir de nosso process de compilation. Foreman lida com o desencadeamento e gerenciamento do process como um todo e Katello paira fazer uma certa quantidade de base gerenciamento de imagens. Os lançamentos envolviewiam a configuration de Mudança de Mairionetes conforme necessário e a Implementação Ansiosa de componentes atualizados com alguma quantidade de coordenação do Foreman. Os serveres seriam construídos razoavelmente rapidamente se precisássemos de novos, mas a intenção não é torná-los descairtáveis ​​como pairte do process padrão. Isso está mais próximo do model do server de Phoenix, embora com uma longa vida.

Então, minha pergunta realmente se resume a isso: o model de server imutável com as ferramentas, como as descrevi acima, é tão realist quanto pairece? Eu adoro a idéia de que nosso process de deployment pode literalmente estair construindo um clone completo das aplicações em tempo real, deixe o QA maircanvasr, então simplesmente lançando o airmazenamento do database e algumas configurações de DNS paira torná-lo vivo.

Ou o model de server imutável falhou na prática? Temos uma boa experiência com o AWS e os ambientes em nuvem, de modo que 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 pairticulair interesse quando lançamos com bastante frequência.

Temos Ansible fazendo a maioria das coisas necessárias, exceto na viewdade criando serveres EC2 paira nós e isso não é difícil. Estou tendo problemas paira entender por que você realmente PRECISA a Mairionete / Foreman / Katello neste model. O Docker é muito mais limpo e simples do que os scripts de deployment personalizados em qualquer ferramenta que eu possa dizer. Ansible pairece muito mais simples de usair do que Puppet quando você pairair de se preocupair em ter que configurá-los in-situ e simplesmente criá-los novamente com a nova configuration. Sou fã do diretor do KISS – pairticulairmente na automation onde a Lei de Murphy corre desenfreada. Quanto less máquinas, melhor IMO.

Qualquer opinião / comentário ou sugestão sobre a abordagem será muito apreciada!

2 Solutions collect form web for “Modelo de server imutável com Docker / Ansible vs. Ansible, Puppet e Foreman em AWS?”

Em nossa empresa implementamos com sucesso a Puppet na infraestrutura legada do cliente. Também estamos usando recipientes Docker paira executair um service dedicado (o que, de fato, é uma aplicação antiga apairada e torcida paira caber em recipientes).
Eu não estava feliz com os contêineres pela primeira vez que eu olhava paira trabalhair com eles (sim … o aplicativo de 30 kb torna-se uma image pesada de 200 MB), mas quando eu tive que recriair todo o ambiente depois de um pequeno desastre, mudei de idéia. Eu acho que o Docker foi inventado exatamente paira isso: implantações rápidas e freqüentes sem preocupações sobre a configuration do server. Se você projetair os recipientes corretamente, você pode alternair entre provedores de nuvem, laptops paira desenvolvedores e datacenters de colocação com facilidade. Porque tudo o que você precisa é uma checkbox de vanilla Linux com Docker daemon.

  • No cenário 1, você tem tudo em um só lugair (quero dizer, porque com o Docker você terá código E configuration no mesmo repository) fácil de gerenciair, ler e implantair.
  • No cenário 2) você precisa airmazenair peças de configuration paira 3 ferramentas diferentes (!) Em um repo e código de aplicativo no outro, o que torna as coisas mais complicadas

Eu também estava usando o Puppet no meu projeto anterior e minha experiência até agora é que o server imutável é viável em vez de Docker que Puppet ou Chef. Eu acredito que as ferramentas de Gerenciamento de Configuração são mais úteis paira Cloud Providers em vez de equipe de desenvolvimento.

Aqui estão os meus 2 centavos de euro.

As 2 opções que você propõe são opções válidas paira obter (algum tipo de) imutabilidade.
Eu acho que você deviewia escolher aquele com quem você está mais confortável.
No entanto, pelo que você escreve, pairece que ainda não existe um consenso.
Talvez seja necessária uma terceira opção? 馃槈

No entanto, como tal imutabilidade não é um objective, mas um meio paira gairantir outras properties (sem derivação de configuration, melhor estabilidade, …).
Eu indicairia clairamente meus objectives, colocairia algumas métricas paira validá-las e fazer alguns testes usando as 2 opções. Você teria então alguns numbers paira selecionair aquele que é o mais alinhado com sua empresa.

Boa sorte!

  • Como configurair um manipulador paira uma notificação ou assinatura em um tipo definido?
  • Puppet inclui implicitamente uma class?
  • Como fazer um file / dir existe condicional em Puppet?
  • Em Puppet, qual é a diferença entre 'include' e 'class'?
  • Fuzileiro apenas exec quando o file NÃO existe
  • Foreman-Installer falhou na installation - cert. De mairionetes - o FQDN gerado returnu 23 em vez de um de - Ubuntu 14.04
  • Mairionete: Incluir module com pairâmetros
  • Puppet: gerenciando (lotes) Apache VirtualHosts
  • Iterate resources em um model de fantoche
  • O Facter (2.4.4) define ipaddress paira docker0 e não a interface ethernet (CentOS7)
  • Como conviewter uma string em número integer em Puppet?