Puppet e docker podem fazer muitas das mesmas coisas, porém eles os abordam de uma maneira diferente.
Puppet gerencia arquivos + pacotes + serviços. (Chamado trifecta). O Docker encapsula binários e arquivos de configuração dentro de um contêiner.
No momento da redação deste artigo, o docker ainda é instável e não deve ser usado na produção. É provável que muitas APIs sejam alteradas até o lançamento da versão 1.0.
Mesmo quando o docker se tornar estável, será uma grande tarefa converter todos os processos e arquivos de configuração em contêineres do docker.
O fantoche, por outro lado, é um produto estável e vem com um ecossistema inteiro de ferramentas (heira, mcollective, facter, razor). Essas ferramentas podem ser implementadas rapidamente e sem preocupações de quebras.
Eu sugeriria os seguintes recursos.
Um vídeo de como gerenciar pilhas de aplicativos com o fantoche
https://www.youtube.com/watch?v=KSo_mcJxFIA
Um podcast sobre como o estivador e o fantoche podem trabalhar juntos
http://devopscafe.org/show/2014/1/23/devops-cafe-episode-46.html
Um artigo de blog de marionetes sobre como integrar-se ao docker
http://puppetlabs.com/blog/building-puppet-based-applications-inside-docker
Outro artigo de blog sobre fantoches e estivadores coexistindo
http://puppetlabs.com/blog/can-containers-and-configuration-management-co-exist
Um módulo fantoche para interagir com o docker
http://docs.docker.io/use/puppet/
Uma pequena correção na terminologia dos devops. Devops é mais uma metodologia de desenvolvimento de software em que desenvolvedores e operações cooperam, do que qualquer ferramenta específica.
Atualizar
Atualmente minha empresa usa fantoches e estivadores. Aqui está uma ótima apresentação dada no puppet conf 2014 sobre por que você usaria puppet vs docker. Conduzido por James Turnbull, ex-empregador de fantoches e autor do livro docker.
https://puppetlabs.com/presentations/using-docker-puppet-james-turnbull-kickstarter
Também é um bom tutorial em vídeo sobre docker, fornecido por sysadmincasts.com
https://sysadmincasts.com/episodes/31-introduction-to-docker
Profissionais do Docker:
- Pode acelerar a instância rapidamente
- Mais fácil de aprender do que o fantoche
- Fácil de fazer 0 tempo de inatividade
Contras do Docker:
- Os contêineres têm limite de 10 GB ao usar o back-end do devicemapper
- Pequenas alterações na configuração levam muito tempo para reconstruir o contêiner
- Custa dinheiro para usar um registro do docker como hub.docker.com, quay.io (o registro do docker auto-hospedado é extremamente problemático e não possui interface gráfica)
- Nenhum sistema de inicialização adequado. Alguns aplicativos não são bons.
- Nenhum controle refinado sobre a rede
- Os aplicativos que requerem subshells (olhando para você RVM + ruby) são muito complicados para começar a funcionar corretamente
- Não é possível gerenciar hosts do Windows, nenhum SLES ou outros sistemas operacionais menos populares
- Atualmente, a orquestração dos estivadores é muito jovem.
- No momento, não é possível definir seu /etc/resolv.conf no tempo de compilação
- Vários bugs que precisamos montar / etc / localtime e / dev / urandom para mapear para os hosts localtime e diretórios urandom.
- O desempenho não é tão rápido (apesar de todas as alegações de que o docker deve ter 99% da velocidade do bare metal, às vezes é 30% mais lento que outras máquinas).
- Os contêineres pequenos ainda têm centenas de megabytes de sobrecarga. Nossos contêineres são todos de vários gigabytes.
Profissionais de marionetes:
- Fácil de escalar
- Funciona com servidores existentes (windows, linux, sles)
- Rápido para fazer pequenas alterações
- Comunidade forte de outros usuários e módulos de bonecos
- API padronizada para instalar pacotes em todas as plataformas
Contras fantoches:
- Grandes infra-estruturas ficam muito complexas
- Dependências de módulo condicionais criam código spagetti
- Mais peso pesado
Atualmente, usamos fantoches para provisionar nossos contêineres. Os contêineres do docker são usados para construções de jenkins e são destruídos após cada construção. Funciona bem e nos oferece um ambiente consistente. Isso significa que precisamos escrever o código apenas uma vez e depois reconstruir as máquinas ubuntu, sles e centos. A reconstrução dos contêineres leva cerca de 15 a 30 minutos e ainda é um processo manual. O Docker é ótimo para ativar vm de teste rápido,
Em resumo, o fantoche é ótimo no gerenciamento de sua infraestrutura existente. O Docker é bom se você tiver um greenfield 100% linux com uma pilha de tecnologia que pode ser incluída em pequenas instâncias efêmeras. Enquanto algumas das funcionalidades se sobrepõem, elas não são mutuamente exclusivas.
O Docker ajuda a provisionar e configurar inicialmente contêineres, mas executa comandos únicos na inicialização do contêiner.
O Puppet é mais forte quando você o executa como um daemon, assegura que sua configuração permaneça conforme você o especifica. Por exemplo, se o serviço parar de executar, ele será iniciado novamente.
Uma das melhores coisas sobre a configuração de bonecos (projetada corretamente) é que eles são idempotentes ; é suposto descrever o estado em que você deseja estar e não necessariamente as etapas para chegar lá.
Também permite abstrair e parametrizar configurações e exportar parâmetros criados em um servidor ou contêiner e usá-los em outro (por exemplo, coletando uma lista de nomes de host de nós para um aplicativo de monitoramento).
Eu diria que eles definitivamente servem a propósitos diferentes, mas relacionados. Atualmente, estou procurando usar manifestos fantoches existentes para começar a configurar contêineres para que os ambientes de desenvolvimento sejam mais parecidos com os ambientes de produção.
fonte