Relação entre Vagrant, Docker, Chef e OpenStack (ou produtos semelhantes)?

55

Sou um desenvolvedor da web, mas também estou interessado em algumas tarefas administrativas. Assim, o novo passo da administração pura para os dev-ops é útil para mim.

De qualquer forma, tenho alguns problemas para colocar algumas coisas em um relacionamento. Talvez não exista, então eu queria pedir ajuda para esclarecer.

Basicamente, o que quero relacionar é quatro tipos de software (pelo que entendi). Os produtos exatos não importam, você pode colocar qualquer software similar como alternativa:

  • Vagrant: Do meu ponto de vista, é automatizar a criação e o gerenciamento de VMs: configurando-as, iniciando-as e interrompendo-as. Isto pode ser feito usando uma VM local ou remota, por ex. em uma plataforma de nuvem.
  • Docker: Uma "VM leve", baseada em alguns conceitos de kernel do Linux, que podem ser usados para executar processos isoladamente, por exemplo, em um ambiente de hospedagem compartilhada.
  • Chef: uma ferramenta para configurar e configurar um sistema operacional, por exemplo, dentro de uma VM.
  • OpenStack: Uma ferramenta que permite criar sua própria nuvem privada, comparável a algo como a AWS.

Pergunta # 1: As minhas explicações estão certas, ou estou errado com alguns (ou todos) destes consumos?

Pergunta # 2: Como eu poderia misturar todas essas ferramentas? Isso faria algum sentido?

Na minha imaginação e do meu ponto de vista, você pode ir e

  • use o OpenStack para criar sua própria nuvem,
  • use o Vagrant para gerenciar as VMs em execução na nuvem,
  • use o Chef para configurar essas VMs
  • e, finalmente, use o Docker para executar processos dentro das VMs.

Isso está correto? E se assim for, você pode me dar um conselho sobre como começar a usar tudo isso (é bastante ao mesmo tempo, e eu ainda não sei por onde começar)?

    
por Golo Roden 12.09.2013 / 19:15

4 respostas

52

Vamos usar suas respectivas páginas da web para descobrir sobre o que são todos esses projetos. Eu alterarei a ordem na qual você listou, no entanto:

  • Chef : Chef é uma plataforma de automação que transforma a infraestrutura em código.

    Este é um software de gerenciamento de configurações . A maioria deles usa o mesmo paradigma: eles permitem que você defina o estado que você quer que uma máquina seja, com relação a arquivos de configuração, software instalado, usuários, grupos e muitos outros tipos de recursos. A maioria deles também fornece funcionalidade para enviar alterações para máquinas específicas, um processo geralmente chamado de orquestração .

  • Vagrant : crie e configure ambientes de desenvolvimento leves, reproduzíveis e portáteis.

    Ele fornece uma maneira reprodutível de gerar máquinas totalmente virtualizadas usando o VirtualBox ou o VMWare da Oracle tecnologia como provedores . O Vagrant pode coordenar com um software de gerenciamento de configuração para continuar o processo de instalação onde o instalador do sistema operacional termina. Isso é conhecido como provisionamento .

  • Docker : Um projeto de código aberto para empacotar, enviar e executar qualquer aplicativo como um contêiner leve

    A funcionalidade deste software sobrepõe-se um pouco com a do Vagrant, na qual ele fornece os meios para definir instalações de sistemas operacionais, mas difere muito na tecnologia usada para essa finalidade. O Docker usa contêineres do Linux , que não são máquinas virtuais em si, mas processos isolados executados em sistemas de arquivos isolados. O Docker também pode usar um sistema de gerenciamento de configurações para provisionar os contêineres.

  • OpenStack : software de código aberto para criar nuvens privadas e públicas.

    Embora seja verdade que o OpenStack pode ser implantado em uma única máquina , tal implantação é puramente para prova de conceito, provavelmente não muito funcional devido a restrições de recursos.

    O alvo principal para instalações do OpenStack são ambientes com vários nós de metal puro, onde os componentes diferentes podem ser usados em hardware dedicado para alcançar melhores resultados.

    Uma funcionalidade chave do OpenStack é o suporte para muitas tecnologias de virtualização, desde totalmente virtualizada (VirtualBox, VMWare) a paraVMirtuada (KVM / Qemu) e também contêineres (LXC) e até Modo de usuário Linux (UML) .

Eu tentei apresentar esses produtos como componentes de uma arquitetura específica. Do meu ponto de vista, faz sentido primeiro definir suas necessidades com relação ao ambiente que você precisa (Chef, Marionete, Ansible, ...), e então poder implantá-lo de forma controlada (Vagrant, Docker , ...) e, finalmente, escalá-lo para o tamanho global, se necessário.

O quanto de toda essa funcionalidade você precisa deve ser definido no escopo do seu projeto.

Observe também que simplifiquei bastante todas as explicações técnicas. Por favor, use os links referenciados para informações detalhadas.

    
por 12.09.2013 / 22:16
3

Eu acho que vindo de uma experiência de desenvolvedor, tornar-se um 'devops' realmente mais complicado, sua pergunta tem quase 3 anos, então seria interessante ouvir como você está encontrando a jornada, eu darei uma resposta do ponto de vista do administrador do sistema sobre os aplicativos que você mencionou acima e esperamos lançar alguma luz, ou dar uma perspectiva não técnica que irá de alguma forma explicar por que uma pessoa (admin ou dev) começaria a considerar exatamente o que você pediu, por exemplo da perspectiva de devops, qual é a relação entre x, y, z essas ferramentas são maiores que a soma de suas partes?

Na verdade, acho que administradores de sistemas têm a vantagem aqui, a maioria dos aplicativos que você mencionou resolveu problemas de administração e, ao fazer isso, fornecer um ambiente de data center mais abstrato, e isso é mais programável para desenvolvedores e desenvolvedores. a nova estratégia de 'devops' (leia estratégia / equipe, devops não é uma pessoa). Então, qual é o relacionamento com os aplicativos que você menciona? Como isso fornece uma abordagem holística para o serviço de TI?

OpenStack: A tool that allows you to build your own private cloud, hence comparable to something such as AWS

Isso é o que é, mas o que isso faz? - o sistema operacional mais apropriado foi o D.O.S - ele operou seu disco abstraindo o BIOS, o OpenStack opera seu data center e abstrai sua infraestrutura (IaaS - é jargão para o sistema operacional do data center). Agora o seu data center tem uma API, uma sintaxe de comando e uma GUI, o OpenStack pode direcionar hipervisores, switches, roteadores, firewalls, redes de área de armazenamento, balanceadores de carga, hosts docker etc. O Openstack usa o hardware 'plugin' ou a função específica pode existir somente em software como software definido algo ou virtualização de função de rede. Além disso, o OpenStack e todas as outras nuvens podem orquestrar sua própria infraestrutura lendo scripts que você lança no mecanismo de orquestração ou são acionados com base em regras (ampliação, redução de escala, etc.). Portanto, o openstack é uma camada gigante de abstração, por ex. Eu não me importo com qual switch eu tenho, me dê uma rede com o comando this ou crie uma carga balanceada complicada, HA, publicamente disponível, auto escalonamento, nome de domínio registrado, armazenamento anexado thingy - com este script que encontrei na internet.

Docker: A "lightweight VM", based on a few Linux kernel concepts, which can be used to run processes in isolation, e.g. in a shared web hosting environment.

O Docker é outra camada de abstração e, como a nuvem é uma tecnologia disruptiva, está mudando o setor porque resolve muitos problemas operacionais, como dependências de software, atualizações, isolamento de dados e portabilidade total. O Java tornou-se popular por causa da portabilidade do código-fonte que os desenvolvedores não tinham que pensar, uma JVM em execução significava que o código deles deveria rodar na máquina de café, desde que suportasse java. Docker resolve um problema semelhante, para executar o meu aplicativo você precisa de um host docker, não , você precisa desta versão do python, este kernel, esta distribuição linux e assim por diante, o aplicativo ainda tem essas dependências é claro , mas o host subjacente não se importa e o administrador não se importa com o que você faz dentro de um contêiner isolado (até certo ponto). O Docker está mudando o paradigma de desenvolvimento e operações, tratando todo um sistema operacional e seus serviços como um binário. podemos obtê-los de um repositório , modificá-los, modificá-los, executá-los com parâmetros, etc.

Chef: A tool to setup and configure an operating system, e.g. inside a VM.

Sim, e não tão perturbador quanto os dois primeiros, Chef, marionete, ansible, sal, gerente de operações do centro de sistemas e uma infinidade de outros aplicativos neste espaço fornecem uma maneira para desenvolvedores e administradores modelarem implantações, atualizações e outros ações (config changes), não parece haver nenhum corpo de padrões sobre esses esforços, como é para a nuvem . Mas não estamos lidando com algo tão definitivo quanto a Infraestrutura, é mais doloroso aprender isso e pouco é transferível de um para o outro.

Vagrant: From my understanding is to automate creation and management of VMs: Setting them up, starting and stopping them. This can be done using a local VM or remote, e.g. on a cloud platform.

Este é o único estranho na lista de aplicativos que você mencionou, o Vagrant é uma ferramenta para desenvolvedores e um brinquedo para administradores, você pode rapidamente criar um ambiente de desenvolvimento com o vagrant, por exemplo, Eu quero desenvolver um aplicativo para Android, pegue um IDE de vagrant, acho que será ultrapassado pelo Docker em breve.

can you give me an advice in how to start using all this (it's quite a lot at the same time, and I don't know yet where to start)?

É por isso que acho que os administradores têm a vantagem, tivemos que fazer a maior parte disso manualmente e saber o que pode dar errado, os manifestos de fantoches, a computação em nuvem e a orquestração do Docker serão mais fáceis para nós. tangentes, então meu conselho para qualquer devops em potencial é ser um administrador primeiro.

    
por 18.05.2016 / 15:14
0

Acabei de concluir um projeto de implantação do OpenStack que usa um servidor Chef dentro de uma instância do Vagrant: link

O principal problema em fazer isso dessa maneira é colocar a instância do Vagrant no mesmo IP sempre que você quiser gerenciar os nós. Se você faz endereçamento estático, funciona bem. Fazê-lo através de uma VPN é menos que ideal.

    
por 19.09.2013 / 00:10
0

No meu fim, estou usando apenas uma combinação do Vagrant e do Docker.

Eu uso o vagrant para provisionar as máquinas (há provedores adicionais de nuvem , mas estou usando o VirtualBox embutido.Porque estou usando essa abordagem, a rede externa e o armazenamento são praticamente manuais, mas se você usar algo como o vagrant Com o plug-in , você pode dizer à AWS para provisionar as peças necessárias para você.

O script de aprovisionamento usado aponta para um local seguro que contém o certificado de autoridade de certificação e as chaves usadas para assinar CSRs juntamente com os docker swarm join tokens. Além disso, eu instalo o motor docker e o configuro para juntar-se ao swarm (inicialize se não houver nenhum).

Uma vez resolvido, eu simplesmente faço um docker stack deploy da minha máquina local ou caixa de construção para distribuir a pilha com tudo que eu preciso.

No meu caso, deixei cair chef em favor de usar apenas scripts simples de pós-instalação que fazem yum ou apt-get como meus scripts de provisionamento.

Eu também uso o plugin vagrant-triggers para adicionar script adicional antes de destruir (no meu caso, deixar o enxame).

A parte boa de centralizar com o Vagrant é que você pode replicar o ambiente em outro sistema ou em um único computador para desenvolvimento, basta adicionar ou alterar a seção provider . Lembre-se que eu não passei por configurar o OpenStack em um único computador para gerenciar o VirtualBox.

    
por 13.03.2018 / 20:54