Para o ambiente proposto foram utilizados os softwares Vagrant e VirtualBox.
Para cada máquina proposta no README foi criado uma VM, configurado sua interface e exportado a VM, gerando um arquivo.OVA.
Para uma seguinte criação de nova máquina, apenas importe o arquivo.OVA.
Para utilizar sua interface é necessario apenas acesso ssh -X: ssh -X [email protected]
Documentação de instalação do Vagrant versão 2.2.1 e VirtualBox versão 5.2.22 em sistema Ubuntu Linux.
- De permissão total para executar os próximos comandos:
sudo su
. - Atualize seu sistema:
apt-get update && apt-get dist-upgrade && apt-get autoremove
- Confira se o seu sistema é de 32 bits ou 64 bits.
unane -m
apt-get remove virtualbox-\*
apt-get purge virtualbox-\*
rm ~/"VirtualBox VMs" -Rf
rm ~/.config/VirtualBox/ -Rf
wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | apt-key add -
wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | apt-key add -
sh -c 'echo "deb http://download.virtualbox.org/virtualbox/debian $(lsb_release -sc) contrib" >> /etc/apt/sources.list'
apt-get update
apt-get install virtualbox-5.2
Caso haja versão mais atual, alterar a versão -5.2
wget http://releases.ubuntu.com/16.04/ubuntu-16.04.4-server-amd64.iso
- Criação da VM:
- Crie uma pasta para deixar a VM:
mkdir /media/vm/maquinas/
- Crie a VM com nome teste com sistema operacional Ubuntu 64 dentro da pasta /media/vm/maquinas/
VBoxManage createvm --name TestMachine --ostype Ubuntu_64 --register --basefolder /media/vm/maquinas/
- Altere alguns parâmetros usando o comando modifyvm.
- Defina a quantidade de cpu como 2, a memória para o tamanho de 1024mb, vídeo com 9mb e uma placa de redes em modo nat no porta eth0.
VBoxManage modifyvm "TestMachine" --cpus 2 --memory 1024 --vram 9 --nic1 nat
- Crie um HD com tamanho de 10gb no arquivo teste-10gb.vdi
VBoxManage createhd --filename /media/vm/hds/TestMachine-10gb.vdi --size 10240 --format VDI --variant Standard
- Anexe o HD a nossa máquina:
VBoxManage storagectl TestMachine --name "TestMachine SATA" --add sata --bootable on
VBoxManage storageattach TestMachine --storagectl "TestMachine SATA" --port 0 --device 0 --type hdd --medium /media/vm/hds/TestMachine-10gb.vdi
- Adicione a IDE a nossa máquina:
VBoxManage storagectl TestMachine --name "IDE TestMachine" --add ide
- Processo de montagem de imagem:
VBoxManage storageattach TestMachine --storagectl "IDE TestMachine" --port 0 --device 0 --type dvddrive --medium /home/asgard/ubuntu-16.04.4-server-amd64.iso
- Inicie a máquina:
VBoxManage startvm TestMachine
- Após instalação do sistema é possivel você ligar a máquina em modo headless:
VBoxHeadless --startvm testMachine
Para dúvidas, acesse a documentação do VBoxManage.
Tutorial 1.
Tutorial 2.
Os seguintes passos podem ser encontrados no arquivo README, nos tópicos Configuração de Rede do Ambiente e Verificação de conectividade·
Os passos apresentados permite a criação do ambiente proposto, porém ainda sim o desenvolvedor fica preso a interface gráfica, caso não conheça os comandos necessários para a configuração do VirtualBox por linhas de comandos
Uma outra ferramenta que possui uma fácil documentação e que permite facilitar a criação de VMs no Virtualbox é o Vagrant. O Vagrant é um Software facilitador na criação e configuração de ambientes com máquinas virtuais, tanto com VirtualBox ou para VMWare.
apt remove vagrant
apt purge vagrant
rm -rf /opt/vagrant
rm -f /usr/bin/vagrant
Antes de realizar a instalação, verifique a ultima release do vagrant.
wget https://releases.hashicorp.com/vagrant/2.2.1/vagrant_2.2.1_x86_64.deb
dpkg -i vagrant_2.2.1_x86_64.deb
vagrant -v
which vagrant
O Vagrant é baseado em box para criação de VMs, para melhor entendimento e dúvidas, acesse a documentação.
- Adiciona um novo box a sua lista de box
vagrant box add name url
- Lista suas box para utilização
vagrant box list
- Remove um box da lista de box
vagrant box remove name
- Cria o arquivo Vagrantfile com as configurações do box que você informou no [box-name], caso você não tenha o box ainda adicionado é obrigatório passar o [box-url] para que ele possa baixa-lo
vagrant init [box-name] [box-url]
- Cria e inicia a instancia após o comando vagrant init
vagrant up
- Reinicia a instancia do box ativo
vagrant reload
- Stopa a instancia ativa, congelando seu estado atual
vagrant suspend
- Ativa a instancia suspensa, até então, pelo comando vagrant suspend
vagrant resume
- Manda um comando para desligar a instancia ativa, finalizando todos os processos antes de finalizar
vagrant halt
vagrant halt name_vm
- Destroy a instancia ativa
vagrant destroy
- Acessa a instancia ativa via ssh
vagrant ssh
- Informa o status atual da instancia
vagrant status
- Informa o status atual de todas instancias (Parado, rodando, congelada, etc).
vagrant global-status
- Limpando VMs obsoletas
vagrant global-status --prune
for i in `vagrant global-status | grep virtualbox | awk '{ print $1 }'` ; do vagrant destroy $i ; done
vagrant box add ubuntu/xenial64
vagrant box list
vagrant init
O arquivo Vagrantfile é onde descrevemos toda a estrutura das nossas VMs.
vim Vagrantfile
vagrant up
Caso dentro do arquivo Vagrantfile tenha mais de uma máquina, e você queira que apenas suba uma determinada VM, basta especificar com o nome da máquina no momento de dar o up.
vagrant up name_vm
Caso queira ver um debug durando o comando up basta apenas colocar o comando --debugvagrant up name_vm --debug
vagrant ssh
ou vagrant ssh name_vm
# -*- mode: ruby -*-
# vi: set ft=ruby :
ENV["LC_ALL"] = "en_US.UTF-8"
Vagrant.configure("2") do |config|
############### start controller ###############
config.vm.define "controller" do |controller|
controller.vm.box = "ubuntu/xenial64"
controller.vm.hostname = 'controller'
controller.vm.network "private_network", ip: "10.0.0.11"
controller.vm.network "public_network"
controller.vm.provider "virtualbox" do |vb|
vb.memory = "10240"
vb.cpus = "4"
end
end
############### end controller ###############
############### start compute ###############
config.vm.define "compute" do |compute|
compute.vm.box = "ubuntu/xenial64"
compute.vm.hostname = 'compute'
compute.vm.network "private_network", ip: "10.0.0.31"
compute.vm.network "public_network"
compute.vm.provider "virtualbox" do |vb|
vb.memory = "10240"
vb.cpus = "4"
end
end
############### end compute ###############
############### start block ###############
config.vm.define "block" do |block|
block.vm.box = "ubuntu/xenial64"
block.vm.hostname = 'block'
block.vm.network "private_network", ip: "10.0.0.42"
block.vm.network "public_network"
block.vm.provider "virtualbox" do |vb|
vb.memory = "10240"
vb.cpus = "4"
end
end
############### end block ###############
end