Este artigo explica como você pode executar máquinas virtuais com o VBoxHeadless, ( recurso do VirtualBox 5.1 ) em um servidor sem interface gráfica no Ubuntu 16.04 ou no Debian.
Normalmente, você usa a GUI do VirtualBox para gerenciar suas máquinas virtuais, mas um servidor não tem um ambiente de área de trabalho.
Felizmente, o VirtualBox vem com uma ferramenta chamada VBoxHeadless que permite que você se conecte às máquinas virtuais por meio de uma conexão de área de trabalho remota, então não há necessidade da GUI do VirtualBox.
Mais Sobre o VirtualBox
VirtualBox é um software opensource, aplicativo gratuito , multi-plataforma para criar, gerenciar e executando máquinas virtuais (VMs) – computadores cujos componentes de hardware são emulados pelo computador host, o computador que executa o programa. VirtualBox pode ser executado em Windows, Mac OS X, Linux e Solaris.
Eu já ensinei milhares de pessoas a utilizar o VIRTUALBOX para aprender LINUX, quando eu digo milhares, são milhares de pessoas mesmo, (53 mil até esse momento) pois estas pessoas já participaram do meu treinamento o PROFISSIONAIS LINUX NÍVEL 1 – EXPRESS, onde eu ensino a pessoa sair do zero e iniciar uma formação LINUX PROFISSIONAL.
Se você ainda não sabe utilizar o VirtualBox para criar maquinas virtuais em seu computador, você pode baixar nosso ebook: Como Usar O VirtualBox – Passo a Passo
Para quem é indicado esse artigo?
Este artigo explica como você pode executar máquinas virtuais com o VirtualBox 5.1 em
um servidor sem interface gráfica no Ubuntu 16.04 ou no Debian, muito indicado para quem está procurando uma solução para servidores de maquinas virtuais.
Esse ambiente não foi testado em produção, e não é uma sugestão para virtualização de servidores em ambientes críticos, para esse fim eu particularmente utilizo VMWare Vsphere, KVM ou XenServer.
Criar e usar um servidor de virtualização com VirtualBox ( VBoxHeadless ) é muito indicado para soluções menores e principalmente ambientes de homologação, e testes de rede, se por um acaso você já usou essa solução que irei apresentar aqui em um ambiente de produção, por favor deixe-me saber sobre sua experiência nos comentários.
Ambiente do servidor de maquinas Virtuais
Eu testei isso em um servidor Ubuntu 16.04 (sistema host) com o endereço IP 192.168.1.100 onde eu estou conectado como um usuário normal.
Esse ambiente de servidor poderia tranquilamente ser feito em DEBIAN GNU/LINUX.
Caso você queira saber mais sobre distribuições Linux indicadas para servidor, acesse o artigo abaixo:
Para aprender mais sobre como escolher a distro LINUX correta para seu servidor e também como fazer o planejamento de um servidor LINUX ( Planejamento de particionamento, sistema de arquivos, softwares a instalar) Veja os dois videos abaixo:
Acesse também uma aula completa de como instalar um servidor LINUX utilizando o DEBIAN.
Instalando o VirtualBox (com VBoxHeadless) no Servidor Linux
Para instalar o VirtualBox 5.1 no nosso servidor Ubuntu 16.04, vamos utilizar os comandos abaixo.
# echo "deb http://download.virtualbox.org/virtualbox/debian xenial contrib" >> /etc/apt/sources.list
O comando acima, apenas adicionou o repositório do virtualbox.org em nossa arquivo /etc/apt/sources.list, se você tiver alguma dúvida sobre o gerenciamento de pacotes no LINUX eu recomendo baixar o Ebook Iniciando com Ubuntu Linux.
Temos também alguns artigos que podem te ajudar a gerenciar pacotes no LINUX de forma mais fácil.
Vamos continuar com a instalação do VirtualBox no servidor Linux então:
Próximo passo é baixar a chave pública do VirtualBox …
wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
Isso é necessário para o nosso gerenciador de pacotes (APT) reconhecer 100% o novo repositório que acabamos de adicionar.
Vamos atualizar o banco de dados de repositórios do APT com o comando abaixo:
# sudo apt-get update
Em seguida, instalamos o VirtualBox 5.1 da seguinte forma:
# sudo apt-get install linux-headers-$(uname -r) build-essential virtualbox-5.1 dkms
(O pacote dkms garante que os módulos do kernel do host VirtualBox sejam adequadamente atualizados se a versão do kernel do Linux mudar)
Instalando o pacote de extensões no VirtualBox (VirtualBox Extension Pack)
Começando com a versão 4.0, o VirtualBox introduziu os chamados “pacotes de extensão” e terceirizou algumas funcionalidades como o suporte à conexão de desktop remoto (VRDP) que fazia parte dos pacotes do VirtualBox antes da versão 4.0.
Como precisamos de conexões de desktop remoto para controlar nossas máquinas virtuais, agora precisamos instalar o pacote de extensão apropriado.
Acesse a página de downloads do VirtualBox, e procure pelo link do pacote de extensões:
Nesse caso: VirtualBox 5.1.18 Oracle VM VirtualBox Extension Pack:
Faça o download e instale o pacote de extensões da seguinte maneira:
# cd /tmp # wget http://download.virtualbox.org/virtualbox/5.1.0/Oracle_VM_VirtualBox_Extension_Pack-5.1.0-108711.vbox-extpack # sudo VBoxManage extpack installOracle_VM_VirtualBox_Extension_Pack-5.1.0-108711.vbox-extpack
(Certifique-se de pegar a versão mais recente do site VirtualBox e usar o sudo para instalar o arquivo .vbox-extpack com o VBoxManage conforme comando acima)
Configurando usuário para acessar as maquinas virtuais do VirtualBox
Agora precisamos adicionar o usuário que executará o VirtualBox (administrador neste exemplo) ao grupo vboxusers:
# sudo adduser administrator vboxusers
O VirtualBox agora está instalado e pronto para ser usado.
Usando a linha de comandos para gerenciar o VirtualBox
Como estamos criando um servidor para rodar maquinas virtuais com o VirtualBox, claro tudo será criado via linha de comandos, no servidor não usamos interface gráfica.
Criando uma Maquina Virtual (VM) no VirtualBox
Para criar uma VM pela linha de comando, podemos usar o comando VBoxManage. Veja!
# VBoxManage --help
Para pegar uma lista de opções disponíveis é recomendado que você de uma olhada no capitulo 8 do manual do VirtuaBox.
Vou agora criar uma VM com Ubuntu 16.04 Server com 2048MB de memória e um disco rígido de 10GB a partir da imagem ISO do Ubuntu 16.04 Server. (que eu tenho armazenado em /home/administrator/iso/ubuntu-16.04-server-amd64.iso):
# VBoxManage createvm --name "Ubuntu 16.04 Server" --register # VBoxManage modifyvm "Ubuntu 16.04 Server" --memory 2048 --acpi on --boot1 dvd --nic1 bridged --bridgeadapter1 ens33 # VBoxManage createhd --filename /home/administrator/Ubuntu_16_04_Server.vdi --size 10000 # VBoxManage storagectl "Ubuntu 16.04 Server" --name "IDE Controller" --add ide # VBoxManage storageattach "Ubuntu 16.04 Server" --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium /home/administrator/Ubuntu_16_04_Server.vdi # VBoxManage storageattach "Ubuntu 16.04 Server" --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium /home/administrator/iso/ubuntu-16.04-server-amd64.iso # VBoxManage modifyvm "Ubuntu 16.04 Server" --vrde on
Agora prossiga com o capítulo 3.3 para iniciar o vm e depois conectar-se à VM com um cliente de desktop remoto como descrito no capítulo 4.
Importação de uma VM existente
Vamos assumir que você tem uma VM chamada MINHAVM que você deseja reutilizar neste host que acabando de configurar.
No host antigo, você deve ter um diretório da maquina virtual chamado MINHAVM, nesse diretório deve conter o arquivo MINHAVM.xml.
Copie o diretório MINHAVM para o seu novo diretório Machines, se o seu nome de usuário for administrador como no nosso exemplo estará em:
- /home/administrator/VirtualBox/Machines
# cd /home/administrator/VirtualBox/Machines # ls MINHAVM
Ou seja, copiamos o Diretório da sua VM já existe para dentro do nosso servidor.
Além disso, copie o arquivo MINHAVM.vdi do diretório VDI antigo para o novo.
Deve ficar em:
- /home/administrator/.VirtualBox/VDI/MINHAVM.vdi
Depois, você deve registrar a VM importada, com o comando abaixo:
# VBoxManage registervm Machines/MINHAVM/MINHAVM.xml
Iniciando uma VM com VBoxHeadless
Independentemente de você criar uma nova VM ou importar uma antiga, você pode iniciá-la com o comando abaixo:
# VBoxHeadless --startvm "Ubuntu 16.04 Server"
(Substitua o “Ubuntu 16.04 Server” pelo nome da sua VM.)
VBoxHeadless irá iniciar a VM e um servidor VRDP (VirtualBox Remote Desktop Protocol) que permite que você veja a saída da VM remotamente em outra máquina, já vamos chegar lá.
Comandos para Gerenciar Uma maquina Virtual rodando com o VBoxHeadless
Parando uma VM
# VBoxManage controlvm "Ubuntu 16.04 Server" poweroff
Para pausar uma VM
# VBoxManage controlvm "Ubuntu 16.04 Server" pause
Para reiniciar uma VM
# VBoxManage controlvm "Ubuntu 16.04 Server" reset
Para saber mais sobre o VBoxHeadless, dê uma olhada
# VBoxHeadless --help
Você também pode pegar mais detalhes no capitulo 07 do manual do VirtualBox.
Como Fazer Conexão a uma VM a partir de uma Área de Trabalho Remota
Você pode usar o utilitário de “Conexão de Área de Trabalho Remota” para se conectar à VM, se você estiver acessando de um computador com windows.
Caso esteja usando o Ubuntu Desktop você pode usar o “Remmina Remote Desktop Client” ou o “gnome-rdp” para se conectar à VM.
Instale o cliente com o apt:
sudo apt-get install remmina remmina-plugin-rdp
Basta procurar remmina e, em seguida, clique duas vezes no ícone Remmina Client para iniciar o aplicativo RDP.
No Remmina Remote Desktop Client, clique no ícone mais para adicionar uma nova conexão de área de trabalho remota:
Na janela Preferência da Área de Trabalho Remota, preencha um nome para o perfil (como o Ubuntu 16.04 Server), verifique se o RDP está selecionado como protocolo (deve ser selecionado por padrão) e preencha o endereço IP do host ( servidor rodando VirtualBox) no campo server e selecione uma resolução de cor maior que o padrão de 8bpp – 16bpp, em seguida, clique em Connect:
E pronto , Você deve estar conectado à VM:
Se a Conexão de Área de Trabalho Remota não funcionar
Se a conexão de área de trabalho remota não funcionar, provavelmente você perdeu a etapa onde eu instalei o pacote de extensão VirtualBox.
Instale o pacote de extensão, pare sua máquina virtual, e modifique sua máquina virtual para aceitar conexões de área de trabalho remota, conforme comando abaixo:
# VBoxManage modifyvm "Ubuntu 16.04 Server" --vrde on
(Se o pacote de extensão já estiver instalado quando você criar sua máquina virtual, as conexões da área de trabalho remota são ativadas automaticamente.)
Em seguida, inicie a máquina virtual novamente.
Espero que você tenha gostado de criar esse servidor de virtualização com o VirtualBox (VBoxHeadless).