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:
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.
Um workflow básico em Vagrant pode ser:
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
aprovisionar ambiente virtual
vagrant up
cria uma máquina virtual no hypervisor / provedor padrão
destruir ambiente virtual
vagrant destroy
destroy a máquina virtual no hypervisor / provedor padrão
Este workflow base irá:
adrianovieira/centos7x64_minimal
^[Vagrant box adrianovieira/centos7x64_minimal
] (disponível para KVM e Virtualbox)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.