Vagrant, Docker, Puppet, Chef

Não entendo a diferença básica entre os serviços no título. Estes serviços apenas fornecem software para ajudá-lo a configurar/organizar/gerir os seus VM's, ou também fornecem infra-estrutura física para os seus VM's funcionarem? Em outras palavras, eles são apenas interfaces convenientes entre desenvolvedores e AWS, Rackspace e Azure?

Author: Joseph Johnston, 2017-01-04

3 answers

Não exactamente.

Chef/Puppet são os mesmos, São gestão de configuração. Enquanto você pode usá-los para gerenciar máquinas virtuais ou nuvens públicas/privadas, a maioria das pessoas não tendem a usá-los dessa forma. Eles são gerenciamento de configuração. Eles tipicamente entram em jogo Depois que uma máquina virtual é disparada para obtê-los em um estado desejado. Ou seja, que software é necessário na máquina virtual, que usuários precisam ser adicionados, que configuração é necessária, etc. Assim, tende para ser usado para a infra-estrutura de escala.

Vagrant, embora também possa ser usado para gerenciar máquinas virtuais e nuvens públicas / privadas, geralmente é usado apenas para um ambiente fora. Ele fornece um arquivo coeso para a criação de uma máquina virtual. É semelhante ao chef / puppet dessa forma, mas não tende a ser usado em escala.

O Docker é uma besta separada. Ele tem vários componentes, mas principalmente é usado para "empacotar" (nota: ele faz muito mais do que isso, mas essa é uma resposta ELI5) software e requer um sistema host (ou infra-estrutura)para executar. Ele adiciona um pouco de segurança para aplicações, mas principalmente fornece um "OS" consistente para uma aplicação para executar. Na prática, todas elas podem ser utilizadas num ambiente. Aqui está um exemplo: Diz que tens tempo de Diversão para a aplicação. Você tem oito desenvolvedores que contribuem para isso, e o FunTime foi projetado para ser executado em uma infraestrutura capaz de escala na AWS. É projetado para ter um front-end (FunTime-Front) e um back-end (FunTime-API), e requer postgres. 4 desenvolvedores trabalham no front-end, quatro desenvolvedores trabalham na infra-estrutura.

Eu faria o seguinte (há muitas maneiras de esfolar este gato, mas este é um exemplo):

Eu usaria o Docker para a "FunTime-Front" e "FunTime-API". Eu usaria Vagrant para configurar um ambiente dev para os desenvolvedores (para que eles possam ajustar vários componentes). Vagrant: Inicie o VM localmente (ou numa nuvem, se necessário), instale o acoplador, retire o necessário), então o chef iria instalar o docker nos servidores de "Aplicação", "postgres" nos servidores de postgres, aplicar configurações de segurança, etc. Desta forma, todos os servidores relacionados são os mesmos. Se eu precisasse atualizar um servidor ou adicionar um patch, seria trivial com o gerenciamento de configuração.

Em todos os casos, o acoplador seria usado para que não houvesse diferença de aplicação entre ambientes, incluindo a estação de trabalho dos programadores.

Isto garantiria que não ouvisses a desculpa. "Bem, funciona na minha máquina local!" frequentemente. Além disso, se houver um desdobramento, rolar para trás a aplicação seria muito fácil com o acoplador. Espero que isso dê um pouco mais de informação sobre como podem ser usados.
 34
Author: Nick Burke, 2017-02-21 01:47:34

Vou tentar lançar como na conversa diária,

Vagrant - para criar ambientes de desenvolvimento que funcionem na máquina de novos programadores no mesmo projecto, idealmente em poucos minutos. Geralmente usado em cima do virtualbox, mas pode ser usado com diferentes fornecedores de máquinas.

Docker - nada virtual aqui, Basta imaginar um processo real e as bibliotecas necessárias são enviadas para o servidor como um arquivo. A utilização dos recursos é decidida ao executar comando.

Chef / Puppet - pode ser usado para automatizar qualquer coisa que digite na bash para fazer a configuração do seu projecto (excepto chaves de aplicação, etc.). Você pode usá-los para construir imagens do docker ou ambientes vagros, para que eles não necessariamente têm que existir no servidor de produção física. Ver Packer .

AWS/Rackspace / Azure - são fornecedores da IaaS. Em Inglês claro, eles giram servidores como você exige e lhe dão o acesso ssh. É claro, eles fornecem mais do que que.

Adivinha, eles podem ser usados uns nos outros.

Essas ferramentas pareciam tornar a implantação mais fácil, mas como regra geral, não as usem todas juntas, a menos que poupe tempo para si e para a sua equipa. Às vezes, é muito mais fácil rodar um EC2 à mão e scp o seu projecto com configuração manual. Podes automatizar mais tarde.

Otimização prematura é a raiz de todo o mal - Sir Tony Hoare

 2
Author: hurturk, 2017-07-03 06:10:11

Chef : O Chef é uma plataforma de automação para transformar a sua infra-estrutura em código. É geralmente chamado de Software de gerenciamento de configuração. Você pode definir o estado com diferentes parâmetros como seus arquivos de configuração, s / w, Ferramentas, tipos de acesso e tipos de recursos, etc. Além disso, você pode configurar diferentes máquinas com diferentes funcionalidades com base na sua necessidade.

Puppet : Puppet é uma ferramenta que lhe permite abstrair conceitos específicos da máquina-alvo e tornar o processo de configuração mais agnóstico do sistema operacional. Ele permite instalar um pacote ou executar um serviço de fundo no arranque de forma independente. Defina um comando, pacotes que precisam ser instalados, as dependências de passo, o conteúdo do arquivo e outras coisas que você precisa para colocar a máquina em funcionamento sem problemas.

Vagrant : Vagrant é um projecto que ajuda a desova de máquinas virtuais. Começou como uma linha de comando do VirtualBox, algo semelhante ao Gemfile para o VM. pode escolher a imagem base para começar, rede, IP, compartilhar pastas e colocar tudo em um arquivo que qualquer um pode reutilizar para desovar a mesma máquina configurada. Vagrant tem diferentes extensões, opções de provisionamento e provedores de VM. Você pode executar um VirtualBox, VMware e é extensível o suficiente para ser capaz de criar instâncias no EC2.

Docker : Docker, permite embalar uma aplicação com todas as suas dependências em uma unidade padronizada de desenvolvimento de software. Assim, reduz a fricção entre desenvolvedor, QA e testing. Ele altera dinamicamente sua aplicação, adicionando novas capacidades a cada dia, escalando serviços para mudar rapidamente as áreas problemáticas. Docker está colocando-se em um lugar animado como a interface para PaaS seja ele de rede, descoberta e descoberta de serviços com aplicações que não têm que se importar com a infra-estrutura subjacente. Sim, eles ainda são problemas com o docker na produção(pensou que todas as grandes empresas já migraram sua infra-estrutura para docker), mas, esperamos, veremos as soluções para esses problemas, como equipe de docker e colaboradores trabalhando duro nessas questões. Como Driver de volume do Docker permite soluções de gerenciamento de dados de contêineres de terceiros para fornecer volumes de dados para contêineres que operam com dados, tais como banco de dados, Lojas de valores-chave e outras aplicações de Estado. Como você pode ver um, rexray, como plugin de volume e oferece funcionalidade de armazenamento avançado. emccode / rexray estamos finalmente a começar a concordar em mais do que apenas imagens e tempo de execução.

 1
Author: mohan08p, 2017-12-07 17:08:40