Headless VirtualBox
WIP - Este texto é um trabalho em progresso, ainda não registrei todos os exemplos que queria nem revi o texto. Contribuições são bem-vindas.
Continuando com o projeto de montar um cluster de máquinas, vou precisar de algum sistema de virtualização, porque nem todos os experimentos que quero fazer podem ser feitos apenas com containers. Fiz alguns testes com o QEMU, mas por enquanto é mais prático continuar com o VirtualBox.
Todo acesso no cluster é via ssh, então é necessário controlar o VirtualBox via linha de comando usando o utilitário VBoxManage.
Instalação
Como eu uso o Debian Stable para os servidores, para instalar a versão mais recente do VittualBox é necessário usar o repositório Debian Fasttrack como descrito no site do Debian.
Esse é um resumo da instalação
apt install fasttrack-archive-keyring
Adicione ao arquivo /etc/apt/sources.list
as seguintes linhas. (lembre de observar o nome da versão)
deb https://fasttrack.debian.net/debian-fasttrack/ bullseye-fasttrack main contrib
deb https://fasttrack.debian.net/debian-fasttrack/ bullseye-backports-staging main contrib
Então faça a instalação normalmente
apt update
apt upgrade
apt install virtualbox virtualbox-ext-pack
Existem vários outros pacotes que podem ser interessantes, procure por eles usando o comando apt search virtualbox
.
Criando uma VM
VM_NAME="Nome_da_VM"
VBoxManage createvm \
--name $NAME_VM \
--ostype Debian_64 \
--register
Ajustando CPU
VBoxManage modifyvm $NAME_VM \
--cpus 2 \
--cpuexecutioncap 50 \
--memory 2048 \
--vram 12
Ajustando Memória
VBoxManage modifyvm $NAME_VM \
--memory 2048 \
--vram 12
Atribuindo uma interface de rede
VBoxManage modifyvm $NAME_VM \
--nic1 bridged \
--bridgeadapter1 eno1
Criando HD virtual
VBoxManage createhd \
--filename $NAME_VM.vdi \
--size 5120 \
--variant Standard
Anexando um controladora SATA na VM
VBoxManage storagectl $NAME_VM \
--name "SATA Controller" \
--add sata \
--bootable on
Anexando o disco virtual no controlador
VBoxManage storageattach $NAME_VM \
--storagectl "SATA Controller" \
--port 0 \
--device 0 \
--type hdd \
--medium $NAME_VM.vdi
Anexando uma controladora IDE na VM
VBoxManage storagectl $NAME_VM \
--name "IDE Controller" \
--add ide
VBoxManage storageattach $NAME_VM \
--storagectl "IDE Controller" \
--port 0 \
--device 0 \
--type dvddrive \
--medium imagem.iso
Anexando o drive DVD do host na VM
VBoxManage storageattach $NAME_VM \
--storagectl "IDE Controller" \
--port 0 \
--device 0 \
--type dvddrive \
--medium host:/dev/dvd
Removendo media
VBoxManage storageattach $NAME_VM \
--storagectl "IDE Controller" \
--port 0 \
--device 0 \
--type dvddrive \
--medium none
Abilitando VRDE (RDP)
VirtualBox Remote Display Protocol (VRDP) é compatível com o Remote Desktop Protocol (RDP) criado pela Microsoft e é útil principalmente no início do processo de instalação da máquina cliente.
Você pode modificar a máquina virtual para ativar o RDP automaticamente com o parâmetro --vrde on
ou pode passar o mesmo parâmetro quando iniciar a VM.
VBoxManage modifyvm $NAME_VM --vrde on
Existem alguns modos disponíveis para autenticação para o RDP, eu prefiro usar o modo external
. Dessa forma o sistema vai usar a conta e senha de usuário do host para autenticar no RDP.
VBoxManage modifyvm $NAME_VM --vrdeauthtype external
Listando tipos de sistemas operacionais
VBoxManage list ostypes
Obtendo informações
Mostrar as inforações de uma vm
VBoxManage showvminfo $NAME_VM
Listando VMs
VBoxManage list vms
Iniciando a VM
VBoxManage startvm $NAME_VM \
--type headless
Quando a máquina iniciar, a forma mais simples de conectar a ela nos primeiros acessos, enquanto você ainda não configurou um nome para máquina nem algum sistema de Zero Configuration Networking é obtendo o endereço MAC com o comando showvminfo
e usando ele para encontrar o IP da VM na rede.
VBoxManage showvminfo $NAME_VM
ip neighbor |tr '[:lower:]' '[:upper:]' |grep "XX:XX:XX:XX:XX:XX"
Listando VMs em execução
VBoxManage list runningvms
Lista VMs no modo longo
VBoxManage list -l runningvms
Removendo uma VM
VBoxManage unregistervm --delete $NAME_VM
Desligando a VM
Alem de poweroff também podemos usar pause, resume, reset e vários outros comandos.
VBoxManage controlvm $NAME_VM poweroff
Exportando e importando a VM
VBoxManage export $NAME_VM -o $NAME_VM.ova
VBoxManage import $NAME_VM.ova
Existem muitas outras opções e parâmetros úteis no VBoxManage, você pode consultar elas no capítulo 8º da documentação do VirtualBox