%3F.png)
Sou desenvolvedor web, mas também estou interessado em algumas tarefas administrativas. Conseqüentemente, a nova mudança da administração pura para o desenvolvimento é útil para mim.
De qualquer forma, tenho alguns problemas para colocar algumas coisas em um relacionamento. Talvez não haja, então gostaria de pedir ajuda para esclarecer.
Basicamente, o que quero relacionar são quatro tipos de software (no meu entendimento). Os produtos exatos não importam, você pode colocar qualquer software semelhante como alternativa:
- Vagrant: Pelo que entendi, é automatizar a criação e o gerenciamento de VMs: configurá-las, iniciá-las e interrompê-las. Isso pode ser feito usando uma VM local ou remota, por exemplo, em uma plataforma em nuvem.
- Docker: Uma “VM leve”, baseada em alguns conceitos do kernel Linux, que pode ser usada para executar processos isoladamente, por exemplo, em um ambiente de hospedagem compartilhada.
- Chef: Uma ferramenta para instalar e configurar um sistema operacional, por exemplo, dentro de uma VM.
- OpenStack: Uma ferramenta que permite construir sua própria nuvem privada, portanto comparável a algo como AWS.
Pergunta nº 1: Minhas explicações estão corretas ou estou errado com alguns (ou todos) desses consumos?
Pergunta nº 2: Como eu poderia misturar todas essas ferramentas? Isso faria algum sentido?
Na minha imaginação e do meu ponto de compreensão, você poderia ir e
- use OpenStack para construir sua própria nuvem,
- use o Vagrant para gerenciar as VMs executadas na nuvem,
- use o Chef para configurar essas VMs
- e finalmente usar o Docker para executar processos dentro das VMs.
Isso está correto? E se sim, você pode me dar um conselho de como começar a usar tudo isso (é bastante ao mesmo tempo e ainda não sei por onde começar)?
Responder1
Vamos usar suas respectivas páginas da web para descobrir do que se tratam todos esses projetos. Vou mudar a ordem em que você listou:
Chefe de cozinha: Chef é uma plataforma de automação que transforma infraestrutura em código.
Isto é umsoftware de gerenciamento de configuração. A maioria deles usa o mesmo paradigma: permitem definir oestadovocê deseja que uma máquina seja, no que diz respeito 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 chamadoorquestração.
Vagabundo: crie e configure ambientes de desenvolvimento leves, reproduzíveis e portáteis.
Ele fornece umreproduzívelmaneira de gerarmáquinas totalmente virtualizadasusando a tecnologia VirtualBox ou VMWare da Oracle comoprovedores. 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 comoprovisionamento.
Docker: Um projeto de código aberto para empacotar, enviar e executar qualquer aplicativo como um contêiner leve
A funcionalidade deste software se sobrepõe um pouco à do Vagrant, no qual fornece os meios para definir instalações de sistemas operacionais, mas difere muito na tecnologia utilizada para esse fim. Docker usaContêineres Linux, que não são máquinas virtuais em si, mas processos isolados executados em sistemas de arquivos isolados. Docker também pode usar umsistema de gerenciamento de configuraçãopara provisionar os contêineres.
Pilha aberta: Software de código aberto para construção de nuvens privadas e públicas.
Embora seja verdade que o OpenStackpode 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 das instalações do OpenStack são ambientes bare metal com vários nós, onde ocomponentes diferentespode ser usado em hardware dedicado para obter melhores resultados.
Uma funcionalidade chave do OpenStack é o seu suporte para muitas tecnologias de virtualização, desde totalmente virtualizadas (VirtualBox, VMWare), até paravirtualizadas (KVM/Qemu) e também containers (LXC) e até mesmoModo de usuário Linux (UML).
Tentei apresentar esses produtos como componentes de uma arquitetura específica. Do meu ponto de vista, faz sentido primeiro ser capaz de definir suas necessidades em relação ao ambiente que você precisa (Chef, Puppet, Ansible, ...), e depois poder implantá-lo de forma controlada (Vagrant, Docker , ...) e, finalmente, dimensioná-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 demais todas as explicações técnicas. Por favor, use os links referenciados para obter informações detalhadas.
Responder2
Acho que ter experiência em desenvolvedor tornará o processo de se tornar um 'devops' realmente mais complicado. Sua pergunta tem quase 3 anos, então seria interessante saber como você está encontrando a jornada, darei uma resposta do ponto de vista de o administrador do sistema sobre os aplicativos que você mencionou acima e esperamos que isso esclareça alguma luz ou forneça uma perspectiva não técnica que explicará de alguma forma por que uma pessoa (administrador ou desenvolvedor) começaria a considerar exatamente o que você perguntou, por exemplo, do devops perspectiva qual é a relação entre x, y, z essas ferramentas são maiores que a soma de suas partes?
Na verdade, acho que os administradores de sistema têm vantagem aqui, a maioria dos aplicativos mencionados em sua pergunta resolvem 'problemas' administrativos e, ao fazê-lo, fornecem um ambiente de data center mais abstrato e, por sua vez, é mais programável para desenvolvedores e para o novo ' estratégia do devops (leia estratégia/equipe, devops não é uma pessoa). Então, qual é a relação com os aplicativos que você mencionou? como isso fornece uma abordagem holística ao serviço de TI?
OpenStack: uma ferramenta que permite construir sua própria nuvem privada, portanto comparável a algo como AWS
É isso que é, mas o que faz? - o sistema operacional com nome mais apropriado era DOS - ele operava seu disco abstraindo o BIOS, OpenStack opera seu data center e abstraia sua infraestrutura (IaaS - é o jargão para sistema operacional de data center). Agora que seu data center tem uma API, uma sintaxe de comando e uma GUI, o OpenStack pode controlar hipervisores, switches, roteadores, firewalls, redes de área de armazenamento, balanceadores de carga, hosts docker etc.oua função específica pode existir apenas em software como definido por softwarealgoou virtualização de funções 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 (aumentar, reduzir etc.). Portanto, o openstack é uma camada gigante de abstração, por exemplo, não me importa qual switch eu tenho, dê-me uma rede comessecomando ou crie um complicado balanceamento de carga, HA, disponível publicamente, escalonamento automático, nome de domínio registrado, armazenamento anexadocoisa-com esse script que encontrei na internet.
Docker: Uma “VM leve”, baseada em alguns conceitos do kernel Linux, que pode ser usada para executar processos isoladamente, por exemplo, em um ambiente de hospedagem compartilhada.
Docker é outra camada de abstração e, assim como a nuvem é uma tecnologia disruptiva, está mudando a indústria porque resolve muitos “problemas” operacionais, como dependências de software, atualizações, isolamento de dados e portabilidade absoluta. Java se tornou popular por causa de sua portabilidade de código-fonte na qual os desenvolvedores não precisavam se preocupar. Uma JVM em execução significava que seu código deveria ser executado na máquina de café, desde que suportasse Java. Docker resolve um problema semelhante, para executar meu aplicativo você precisa de um host docker,não, você precisa desta versão do python, deste kernel, desta 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, versioná-los, modificá-los, executá-los com parâmetros etc.
Chef: Uma ferramenta para instalar e configurar um sistema operacional, por exemplo, dentro de uma VM.
Sim, e não tão perturbador quanto os dois primeiros, Chef, puppet, ansible, salt, gerenciador de operações do system center e uma enorme infinidade de outros aplicativos neste espaço fornecem uma maneira para desenvolvedores e administradores modelarem implantações, atualizações e outras ações (config mudanças), não parece haver nenhum órgão de padronização que supervisione esses esforços comoexiste para nuvem. Mas não estamos lidando com algo tão definitivo como Infraestrutura, então é mais doloroso aprender isso e não há muita coisa transferível de uma para outra.
Vagrant: Pelo que entendi, é automatizar a criação e o gerenciamento de VMs: configurá-las, iniciá-las e interrompê-las. Isso pode ser feito usando uma VM local ou remota, por exemplo, em uma plataforma em nuvem.
Este é o estranho na lista de aplicativos que você mencionou, o Vagrant é uma ferramenta para desenvolvedores e um brinquedo para administradores, você pode criar rapidamente um ambiente de desenvolvimento com o vagrant, por exemplo, quero desenvolver um aplicativo Android, pegar um IDE de vagabundo, acho que será ultrapassado pelo Docker em breve.
você pode me dar um conselho sobre como começar a usar tudo isso (é bastante ao mesmo tempo e ainda não sei por onde começar)?
É por isso que acho que os administradores têm vantagem, tivemos que fazer a maior parte disso manualmente e saber o que pode dar errado, manifestos de marionetes, computação em nuvem e orquestração do docker serão mais fáceis para nós, os desenvolvedores se verão tomando muitas tangentes, então meu O conselho para qualquer Devops em potencial é ser primeiro um administrador.
Responder3
Acabei de terminar um projeto de implantação do OpenStack que usa um servidor Chef dentro de uma instância do Vagrant:https://github.com/bluechiptek/bluechipstack/blob/master/README.md
O principal problema de fazer isso dessa maneira é obter o mesmo IP da instância do Vagrant cada vez que você deseja gerenciar os nós. Se você fizer endereçamento estático, funcionará bem. Fazer isso por meio de uma VPN não é o ideal.
Responder4
Do meu lado, estou usando apenas uma combinação de Vagrant e Docker.
Eu uso o vagrant para provisionar as máquinas (háprovedores de nuvem adicionaismas estou usando o VirtualBox integrado. Como estou usando essa abordagem, a rede e o armazenamento externos são praticamente manuais, mas se você usar algo como ovagrant-awsplugin você pode dizer à AWS para provisionar as peças necessárias para você.
O script de provisionamento que uso aponta para um local seguro que contém o certificado CA e as chaves usadas para assinar CSRs junto com os docker swarm join
tokens. Além disso, instalo o docker-engine e configuro-o para ingressar no enxame (inicialize se não houver).
Depois que isso for resolvido, simplesmente faço um docker stack deploy
na minha máquina local ou na caixa de construção para implantar a pilha com tudo o que preciso.
No meu caso eu simplesmente deixei cairchefe de cozinhaa favor de usar apenas scripts simples de pós-instalação que funcionam yum
como apt-get
meus scripts de provisionamento.
Eu também uso ogatilhos vagabundosplugin para adicionar scripts adicionais antes de destruir (no meu caso, para deixar o enxame).
A parte interessante da centralização com o Vagrant é que você pode replicar o ambiente em outro sistema ou em um único computador para desenvolvimento, bastando adicionar ou alterar a provider
seção. Lembre-se de que não configurei o OpenStack em um único computador para gerenciar o VirtualBox.