Dev in a Box

Gosto muito!

Atualmente há vários recursos de virtualização e muitos deles facilitam bastante a vida do desenvolvedor. Há outras motivações, mas se a estação de trabalho não conta com recursos de hardware generosos também pode ser uma razação para usar recursos de virtualização.

Exemplos de virtualizadores amplamente conhecidos são:

E essencialmente, a ferramenta para aprovisionamento dinâmico de máquinas virtuais:

É retórica a pergunta:

“Porque?"

Parte da resposta vem da própria Hashicorp + Vagrant

Vagrant é uma ferramente para criar e gerenciar ambientes de máquinas virtuais de forma simples. Possui um workflow simplificado e foca em automação, baixo tempo de aprovisionamento de ambientes, promove que ambientes de desenvolvimento seja bastante iguais aos de produção e evita a conhecida frase “funciona aqui na minha máquina”. (em tradução livre)

Vagrant is a tool for building and managing virtual machine environments in a single workflow. With an easy-to-use workflow and focus on automation, Vagrant lowers development environment setup time, increases production parity, and makes the “works on my machine” excuse a relic of the past. - Vagrantup.com^[Hashicorp Vagrantup.com]

Complementar a isso, o uso de ambientes virtuais evita que seja preciso instalar um “monte de tecnologias” na estação de trabalho que só será usada em tempo de trabalho / desenvolvimento.

Pense em cenários como desenvolver em PHP-5.x (ou Ruby, Python etc), mas precisar testar a aplicação nas diferences versões da tecnologia. Isso aumentará bastante a complexidade em gerenciar todas as diferentes versões, extensões, gems, módulos etc. É aqui que entra a ferramenta Vagrant e os virtualizadores.

Vagrant também ajuda bastante no desenvolvimento de automação e aprovisionamento de infraestrutura, orquestração de deploy de tecnologias e serviços - analogamente ao desenvolvimento de aplicação.

Workflow

Um workflow básico em Vagrant pode ser:

  1. gerar configuração base

    vagrant init adrianovieira/centos7x64_minimal^[Vagrant Boxes https://app.vagrantup.com/boxes/search]

    cria o arquivo de configuração Vagranfile para o hypervisor / provedor padrão

  2. aprovisionar ambiente virtual

    vagrant up

    cria uma máquina virtual no hypervisor / provedor padrão

  3. destruir ambiente virtual

    vagrant destroy

    destroy a máquina virtual no hypervisor / provedor padrão

Este workflow base irá:

  • baixar a vagrant box adrianovieira/centos7x64_minimal^[Vagrant box adrianovieira/centos7x64_minimal] (disponível para KVM e Virtualbox)
  • aprovisionar uma VM com S.O. CEntOS-7 mínimo
  • desaprovisionar a VM anteriormente criada

A partir daí… “o céu é o limite”. Pode-se gerar scripts de instalação automatizada de tecnologias (PHP, Ruby, JBoss/Wildfly etc) para desenvolvimento ou simulação de ambiente produtivo. Também trabalhar a automação de aprovisionamento e deploy de tecnologias e aplicações usando a ferramenta de automação de seu gosto, como por exemplo Puppet^[Puppet], Ansible^[Ansible.com] etc.