Master
ThoughtWorks
Menu
Fechar
  • O que fazemos
    • Visão geral
    • Experiência de Cliente, Produto e Design
    • Estratégia, Engenharia e Análise de Dados
    • Operação e Transformação Digital
    • Modernização Empresarial, Plataformas e Nuvem
  • Com quem trabalhamos
    • Visão geral
    • Setor automotivo
    • Saúde
    • Setor público
    • Cleantech, energia e utilidade pública
    • Mídia
    • Varejo e e-commerce
    • Serviços financeiros e seguros
    • Organizações sem fins lucrativos
    • Viagem e transporte
  • Insights
    • Visão geral
    • Destaques

      • Tecnologia

        Uma análise abrangente de tecnologias e práticas de engenharia nas empresas

      • Negócios

        Mantenha-se em dia com as mais recentes tendências da indústria

      • Cultura

        Um espaço para conteúdo sobre desenvolvimento profissional e nossa visão sobre justiça social e inclusão

    • Ferramentas e Publicações Digitais

      • Technology Radar

        Um guia com opiniões firmes sobre as fronteiras da tecnologia

      • Perspectives

        Uma publicação para líderes digitais

      • Modelo de Fluência Digital

        Um modelo para priorizar as competências digitais necessárias para se navegar a incerteza

      • Decoder

        Um guia de A a Z sobre tecnologia para lideranças executivas

    • Todos os Insights

      • Artigos

        Visões de especialistas para ajudar seu negócio a crescer

      • Blogs

        Pontos de vista pessoais de ThoughtWorkers de todo o mundo

      • Livros

        Explore nossa vasta biblioteca

      • Podcasts

        Discussões instigantes sobre as últimas novidades em negócios e tecnologia

  • Carreiras
    • Visão geral
    • Processo de aplicação

      O que esperar de uma entrevista conosco

    • Pessoas em início ou mudança de carreira

      Comece sua jornada na tecnologia aqui

    • Vagas abertas

      Encontre oportunidades na sua região

    • Conecte-se

      Assine nossa newsletter mensal

  • Sobre
    • Visão geral
    • Nosso propósito
    • Prêmios e reconhecimentos
    • Diversidade, equidade e inclusão
    • Nossas lideranças
    • Parcerias
    • Notícias
    • Conferências e eventos
  • Contato
Brazil | Português
  • United States United States
    English
  • China China
    中文 | English
  • India India
    English
  • Canada Canada
    English
  • Singapore Singapore
    English
  • United Kingdom United Kingdom
    English
  • Australia Australia
    English
  • Germany Germany
    English | Deutsch
  • Brazil Brazil
    English | Português
  • Spain Spain
    English | Español
  • Global Global
    English
Blogs
Selecione um tema
Ver todos os tópicosFechar
Tecnologia 
Gestão de Projetos Agil Nuvem Entrega Contínua Ciência e Engenharia de Dados Defendendo a Internet Livre Arquitetura Evolutiva Design de Experiência IoT Linguagens, Ferramentas & Frameworks Modernização de sistemas legados Machine Learning & Artificial Intelligence Microsserviços Plataformas Segurança Testes de Software Estratégia de Tecnologia 
O negócio 
Serviços Financeiros Saúde Global Inovação Varejo Transformação 
Carreiras 
Dicas de Carreira Diversidade e Inclusão Transformação social 
Blogs

Topics

Escolha um tópico
  • Tecnologia
    Tecnologia
  • Tecnologia Visão Geral
  • Gestão de Projetos Agil
  • Nuvem
  • Entrega Contínua
  • Ciência e Engenharia de Dados
  • Defendendo a Internet Livre
  • Arquitetura Evolutiva
  • Design de Experiência
  • IoT
  • Linguagens, Ferramentas & Frameworks
  • Modernização de sistemas legados
  • Machine Learning & Artificial Intelligence
  • Microsserviços
  • Plataformas
  • Segurança
  • Testes de Software
  • Estratégia de Tecnologia
  • O negócio
    O negócio
  • O negócio Visão Geral
  • Serviços Financeiros
  • Saúde Global
  • Inovação
  • Varejo
  • Transformação
  • Carreiras
    Carreiras
  • Carreiras Visão Geral
  • Dicas de Carreira
  • Diversidade e Inclusão
  • Transformação social
Entrega ContínuaTecnologia

Puppet e Vagrant: Como provisionar máquinas para seu projeto

Bruno Tavares Bruno Tavares

Published: Oct 16, 2013

Olá todos, hoje falaremos um pouco sobre provisionamento de maquinas e VMs. A idea deste post é mostrar algumas maneiras para facilitar o desenvolvimento, implantação e ramp-up de novas pessoas na sua equipa.

Então, o que é provisionamento de maquinas?

Todo projeto possui suas dependências -- tendo serviços rodando em background, linguagens, jdks e servidores web. Algumas vezes, os passos para ter seu programa rodando em uma maquina nova não estão documentados e depende bastante de tentativa e erro.

E assim que você começa a instalar seu app, lhe falta compilar a biblioteca do postgresql para a gem. E então você instala, mas esqueceu de compilar o ruby com o ultimo patch aplicado. E por ai vai, até que finalmente você consegue ter seu sistema rodando.

Martin Fowler chama esse tipo de maquina provisionada e montadas manualmente de Snowflake machineshttp://martinfowler.com/bliki/SnowflakeServer.html. Elas geralmente não possuem backup, e se houver alguma falha de disco, será muito trabalho para colocar o projeto rodando em um computador novo.

O processo de provisionamento é um conjunto de passos executáveis que podem ser aplicadas em uma imagem inicial para ter tudo configurado corretamente. Esse conjunto de passos traz como beneficio a repetibilidade em ambiente de produção e uma documentação executável dos procedimentos para configuração.

Hoje, existem uma serie de ferramentas para provisionar sua maquina, cada uma delas com seus diferente benefícios e peculiaridades. Vale a pena dar uma olhada no https://www.chef.io/chef/, Puppethttps://puppetlabs.com/puppet/what-is-puppet, Ansible http://www.ansibleworks.com/ e Salt https://saltstack.com/.

Um pouco sobre o Puppet

O Puppet é uma ferramenta que permite você abstrair conceitos específicos do sistema que você gostaria de configurar, o que torna o processo um pouco mais flexível e independente do sistema operacional.

A ferramenta permite que você instale pacotes ou rode serviço durante a inicialização, independente do programa que seria usado no seu computador (brew, apt, yum, pacman ou init, upstart, systemd)

Com o Puppet você pode definir comandos que precisam ser rodados, pacotes a serem instalados, dependência entre os passos, conteúdo de arquivo e tudo mais que fosse preciso fazer para ter o programa rodando sem problemas.

Um exemplo de um arquivo Puppet para provisionar dotfiles pode ser encontrado aquihttps://github.com/bltavares/vagrant-baseline/blob/master/puppet/modules/baseline/manifests/dotfiles.pp.

O projeto usa sua própria linguagem declarativa e possui um esquema de identificação de host. É possível definir quais passos serão utilizados dependendo de diferente variáveis -- hostname, numero do IP, quantidade de memoria, tamanho de disco e por ai vai.

A forma de identificação também pode ser externa, permitindo a configuração de clusters e sistemas distribuídos ou até relações master-slave para os serviços.

Cada grupo de servidores em produção podem ser configurado diferentemente, com as maquinas mais rápidas sendo servidores web e as com mais disco como servidores de arquivos.

Trazendo a nuvem para o ambiente de desenvolvimento

O ambiente de desenvolvimento também pode se beneficiar das tecnologias da nuvem. Usando a combinação de Vagrant e Puppet, o ambiente local pode ficar mais parecido com o ambiente em produção.

As diferenças entre o desenvolvimento e a implantação diminuem, e permite também que você utilize seu sistema favorito para desenvolver (Windows, Mac, Linux com sua app rodando na VM)

Imagine a felicidade do novo membro da equipe rodando um comando, conseguindo tudo pronto para rodar o projeto e começar a desenvolver ainda no mesmo dia!

Mais sobre o Vagrant

O Vagrant é um projeto que facilita a criação de maquinas virtuais. Ele começou como uma abstração da linha de comando do VirtualBox, algo similar a um Gemfile para VMs.

Você pode escolher qual será a imagem inicial, opções de rede, endereço de IP, pastas compartilhadas com o host, descritos em um arquivo para que qualquer um possa recriar uma maquina apropriadamente.

O Vagrant possui diferentes extensões, suporte a diferente ferramentas de versionamento e provedores de VM. Escolha entre utilizar o VirtualBox, VMWare, ou através de extensões, utilizar instancias de maquinas no EC2.

Para começar a usar, instale o pacote http://www.vagrantup.com e o VirtualBox (Eu ainda não cheguei a usar outro provedor de VM). Esta documentação https://docs.vagrantup.com/v2/getting-started/index.html ira ajudar a criar o seu primeiro Vagrantfile.

Baseline: um sandbox de desenvolvimento com baterias incluídas

Baseline https://github.com/bltavares/baseline é uma ferramenta na linha de comando para prover VM com o ambiente inicial pronto para começar a desenvolver em uma linguagem que você preferir.

Vamos dizer que você queira aprender Scala. Com um simples baseline up scala, você terá uma VM com Java, Scala e sbt pronta em alguns minutos.

O conteúdo do diretório em que o baseline init rodar será compartilhado com a maquina virtual, o que significa que para contribuir em qualquer repositório, basta usar um git pull e um baseline up. Não precisa se preocupar mais em instalar mais nada no seu computador.

A lista completa com todos os ambiente suportados esta aqui https://github.com/bltavares/vagrant-baseline#current-environments e inclui ruby, nodejs, mongo e redis, além de outros. Espero que goste das ideas. Não esqueça de passar o feedback do que foi escrito aqui.

Master
Política de privacidade | Declaração contra a escravidão moderna | Acessibilidade
Connect with us
×

WeChat

QR code to ThoughtWorks China WeChat subscription account
© 2021 ThoughtWorks, Inc.