Usando Vagrant - Configuração Vagrantfile, SSH e múltiplas máquinas, veja como configurar Vagrantfile, subir a primeira VM e configurar a conexão SSH.
Conheça os comandos básicos para iniciar um VM na distribuição desejada, conectar com SSH usando a chave privada e finalizar a execução da VM.
O vagrant faz mil maravilhas, mas nesse post aprenda 3 comandos básicos para iniciar seus projetos, no final do post veja um resumo dos comandos.
Instalar Vagrant
Antes de instalar o Vagrant, é necessário instalar um “Provider” que é o software de virtualização, recomendo o virtualbox, mas pode ser usado praticamente todos.
A vantagem do virtualbox é a quantidade de maquinas destinadas a esse tipo de virtualização, é o Provider com maior número de Boxes.
Agora já pode ser baixado e instalado o Vagrant, tem suporte a Windows, Mac e linux baseado em Debian e Centos.
Com o Vagrant instalado, agora é necessário configurar o Vagrantfile para iniciar uma VM.
Crie uma pasta para o projeto, nesse exemplo criei uma pasta chamada projeto1 e dentro desta pasta criei o arquivo Vagrantfile.
Exemplo Vagrantfile com uma VM
Nesse caso estou usando o Ubuntu Trusty 64 Bits, a versão 14.04 LTS do Ubuntu e foi definida uma rede privada para VM no IP 192.168.10.10
BOX_IMAGE = "ubuntu/trusty64" # Ubuntu 14.04 LTS
#BOX_IMAGE = "ubuntu/xenial64" # Ubuntu 16.04 LTS
#BOX_IMAGE = "debian/jessie64" # Debian 8
#BOX_IMAGE = "centos/7" # CentOS 7
#Qualquer VM em: https://app.vagrantup.com/boxes/search
Vagrant.configure("2") do |config|
config.vm.define "dev" do |subconfig|
subconfig.vm.box = BOX_IMAGE
subconfig.vm.hostname = "dev"
subconfig.vm.network :private_network, ip: "192.168.10.10"
end
end
Deixei comentado outras máquinas entre as mais usadas, o Ubuntu 16.04 LTS, o Debian 8 e CentOS 7, para usar uma delas remova o # da frente.
Com o Vagrantfile configurado, é preciso usar o prompt de comando (cmd) ou o Windows Power Shell para iniciar a VM.
Para facilitar o uso do cmd navegue até a página do projeto, segure Shift e clique com o botão direito, então selecione “Abrir janela de comando aqui”.
Com o cmd dentro da pasta do projeto, execute o comando vagrant up para iniciar a VM configurada no Vagrantfile.
Com a VM pronta para uso, para acessar e iniciar o desenvolvimento execute o comando vagrant ssh, a forma simples de se conectar por SSH.
Mas usar o SSH através do cmd ou até mesmo usando através do Windows Power Shell fica um pouco bugado, recomendo usar o Putty ou uma alternativa.
Recomendo usar o Bitvise SSH Client, pois além de client SSH ele ainda oferece suporte para transmissão de arquivos usando protocolo SFTP.
No cmd digite vagrant ssh-config e vai ser exibidos os dados para se conectar, no Bitvise coloque o host 127.0.0.1 e a porta, geralmente 2222 ou 2200.
Vagrant client SSH Bitvise
Em username coloque vagrant e selecione a caixa password e coloque a senha vagrant, vai ser aberto um terminal SSH e também um acesso SFTP.
Vagrant client SSH Putty
Caso queira usar o Putty, em hostname coloque: vagrant@127.0.0.1 e a porta, geralmente 2222 ou 2200, ao conectar vai pedir a senha, use: vagrant.
Para conectar no ssh com a chave privada é necessário converter para o formato ppk usando o puttygen.
Veja esse tutorial com mais detalhes de como se conectar em um servidor SSH usando uma chave privada.
Desenvolvendo com vagrant com múltiplas VMs
Vou deixar esse exemplo de Vagrantfile para trabalhar com ilimitados nodes, para alterar a quantidade altere a opção NODE_COUNT.
BOX_IMAGE = "ubuntu/trusty64" # Ubuntu 14.04
#BOX_IMAGE = "ubuntu/xenial64" # Ubuntu 16.04
#BOX_IMAGE = "debian/jessie64" # Debian 8
#BOX_IMAGE = "centos/7" # CentOS 7
#Qualquer VM em: https://app.vagrantup.com/boxes/search
NODE_COUNT = 2 # mude aqui a quantidade de nodes adicionais
Vagrant.configure("2") do |config|
config.vm.define "master" do |subconfig|
subconfig.vm.box = BOX_IMAGE
subconfig.vm.hostname = "master"
subconfig.vm.network :private_network, ip: "192.168.5.50"
end
(1..NODE_COUNT).each do |i| config.vm.define "node#{i}" do |subconfig|
subconfig.vm.box = BOX_IMAGE
subconfig.vm.hostname = "node#{i}"
subconfig.vm.network :private_network, ip: "192.168.5.#{i + 50}"
end
end
# Install avahi on all machines - necessário para bom funcionando do cluster
config.vm.provision "shell", inline: <<-SHELL
apt-get install -y avahi-daemon libnss-mdns
SHELL
end
Esse modelo já enumera as maquinas como nodes e automaticamente atribui IPs em sequência, além de pré instalar o avahi-daemon.
Comandos básicos Vagrant
vagrant up - para iniciar as VMs do projeto
vagrant halt - finalizar todas VMs
vagrant reload - executa o halt e em seguida up novamente
vagrant destroy - volte a maquina para o estado inicial
vagrant Snapshot Push - Salva o estado da maquina
vagrant Snapshot Pop - Volta ao último estado salvo
vagrant ssh - Conecta na VM por SSH dentro do terminal cmd
vagrant ssh-config - Visualiza as configurações SSH para conectar usando Putty