Para quem (ainda) não conhece o (Oracle VM) Virtualbox é um hipervisor para arquitetura x86 (32-bit e 64-bit) que permite criação e a execução de máquinas virtuais com diversos sistemas operacionais. Ele tanto é usado como uma uma aplicação desktop comum ou integrado em outras ferramentas como o Boot2Docker e Vagrant.
Foi originalmente desenvolvido pela alemã Innotek GmbH, que foi adquirida em 2008 pela Sun Microsystems e esta, comprada pela Oracle Corporation em 2010 — ou seja, um destino muito parecido com o que teve o MySQL e outros projetos.
Usando o console
Eu considero o cliente gráfico do VirtualBox muito limitado e como acesso as máquinas virtuais por SSH acabei me habituando a realizar algumas ações diretamente pela linha de comando.
Tanto que montei um pequeno roteiro.
Ligando, desligando etc
A primeira, e a mais óbvia de todas, é iniciar a/as máquina/máquinas virtual/virtuais:
$ vboxmanage startvm --type headless «UUID/Nome da VM» Waiting for VM "«Nome da VM»" to power on... VM "«Nome da VM»" has been successfully started.
No parâmetro “–type” a opção “headless” não criará uma janela para a máquina virtual que será executada em segundo plano. Também são são válidas as opções “sdl” que abrirá uma janela mas sem os controles habituais (ou seja, ela não capturará o mouse e outras coisas), e “gui” que abrirá uma janela comum do VirtualBox com todas as opções disponíveis.
O que são “UUID” e “Nome da VM”? Fácil é a forma como cada máquina virtual está registrada no hipervisor, através de um identificador único (UUID) ou de uma string, o nome definido para a máquina virtual na sua criação.
Antes que eu esqueça VBoxManage e vboxmanage são a mesma coisa, ambos são links para o “/usr/share/virtualbox/VBox.sh” — ao menos nas distribuições baseadas em Debian.
Para conhecer as máquinas virtuais registradas digite:
$ vboxmanage list vms "CentOS_64_WildFly" {30f1efb1-4a58-451f-9827-a4c330091ce4} "Ubuntu_64_Juju" {b05dd0fc-f80e-4933-b43f-28a4b4d8b1c6} "Ubuntu_64_Chef" {f416f540-ee42-41cd-8e52-84af0fa57e3c}
Para saber quais estão em execução use:
$ vboxmanage list runningvms
"Ubuntu_64_Chef" {f416f540-ee42-41cd-8e52-84af0fa57e3c}
Para desligar as máquinas virtuais… A melhor opção é fazer a partir do próprio sistema operacional convidado:
$ sudo poweroff W: molly-guard: SSH session detected! Please type in hostname of the machine to poweroff:
Quase todas responderão educada e prontamente a solicitação
Uma dica bastante útil, sempre instale o pacote molly-guard (é original da Debianmas há uma versão para RHEL) nas instalações, a função dele é evitar o host errado seja desligado por acidente — visto que você é obrigado a confirmar escrevendo o nome dele.
Mas se algo falhar, pode-se pedir que o hipervisor informe ao sistema operacional convidado que é hora de desligar (enviando o sinal de que o “botão” de liga/desliga foi pressionado):
$ vboxmanage controlvm «UUID/nome da VM» acpipowerbutton
Ou, em um momento de desespero, pedir que o hipervisor desligue e ponto final:
$ vboxmanage controlvm «UUID/nome da VM» poweroff
Também é possível pausar (“pause”), restaurar (“resume”), salvar o estado (“savestate”) e até mesmo reiniciá-la (“reset”), basta substituir a ação no final do comando.
Snapshots
Precisando fazer um “instantâneo” (eu gosto do termo) da máquina virtual o comando é o seguinte:
$ vboxmanage snapshot «UUID/Nome da VM» take "«nome do snapshot»"
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Para listar os snapshots em uma máquina virtual:
$ vboxmanage snapshot «UUID/Nome da VM» list Name: "snapshot1" (UUID: XX-X-X-X-XX1) Name: "snapshot1.1" (UUID: XX-X-X-X-XX2) Name: "snapshot1.1.1" (UUID: XX-X-X-X-XX3) *
O asterisco (“*”) serve para indicar qual o snapshot encontra-se em uso no momento, para trocar/usar outro use:
$ vboxmanage snapshot «UUID/Nome da VM» \ restore «UUID do snapshot/nome do snapshot»
Por exemplo:
$ vboxmanage snapshot "Ubuntu_64_Chef" list Name: antes do apache (UUID: f78280ef-...4f) Name: antes do mysql (UUID: 99af2405-..8d) Name: antes de atualizar (UUID: a3eeff38-..6f) * $ vboxmanage snapshot "Ubuntu_64_Chef" restore "antes do mysql" $ vboxmanage snapshot "Ubuntu_64_Chef" list Name: antes do apache (UUID: f78280ef-...4f) Name: antes do mysql (UUID: 99af2405-..8d) * Name: antes de atualizar (UUID: a3eeff38-..6f)
E utilizando:
$ vboxmanage snapshot «UUID/Nome da VM» \ delete «UUID do snapshot/nome do snapshot»
Você remove um snapshot.
Simplificando
Uma simples constatação:
Após a digitação do terceiro “vboxmanage …” todo mundo já começa a ficar irritado em escrever tanta coisa, eu inclusive, então fiz algo para simplificar um pouco:
E o que isto faz? Cria um conjunto de apelidos e duas funções no Bash que simplificam o uso do VBoxManage tornando a vida mais fácil.
Utilização
Salve o arquivo e use-o da seguinte forma:
$ source ~/vbshortcuts
Para testar experimente:
$ vbls "CentOS_64_WildFly" {30f1efb1-4a58-451f-9827-a4c330091ce4} "Ubuntu_64_Juju" {b05dd0fc-f80e-4933-b43f-28a4b4d8b1c6} "Ubuntu_64_Chef" {f416f540-ee42-41cd-8e52-84af0fa57e3c}
Melhor que digitar “vboxmanage list vms” ou ficar procurando o comando no histórico.
Apelidos
Esta é a descrição completa, inclui um análogo aos comandos listados mais acima e alguns outros:
- Informações:
- vbls : Mostra todas máquinas virtuais registradas.
- vbwho : Exibe as máquinas virtuais em execução.
- vbinfo «UUID/nome da VM» :Lista a configuração e parâmetros da máquina virtual.
- Ligar, desligar etc:
- vbrun «UUID/nome da VM» : Inicia uma máquina virtual em segundo plano (modo headless).
- vbacpi «UUID/nome da VM» : Envia o sinal de desligamento via ACPI para a máquina virtual.
- vbstop «UUID/nome da VM» : Desliga a máquina virtual.
- vbreset «UUID/nome da VM» : Reinicia a máquina virtual.
- vbsave «UUID/nome da VM» : Salva o estado de execução da máquina virtual.
- vbpause «UUID/nome da VM» : Pausa a execução de uma máquina virtual.
- vbresume «UUID/nome da VM» : Tira a máquina pausada virtual da pausa.
- Snapshots:
- vbnapshot «UUID/nome da VM» «nome do snapshot» : Criar um snapshotde uma máquina virtual específica.
- vbsnaplist «UUID/nome da VM» : Lista os snapshots daquela máquina virtual.
- vbsnapdel «UUID/nome da VM» «UUID do snapshot/nome do snapshot» : Apaga um snapshot específico.
- vbsnaprestore «UUID/nome da VM» «UUID do snapshot/nome do snapshot» : Restaura um snapshot específico.
Creio que isto engloba o básico e precisando basta acrescentar o que estiver faltando (e depois compartilhar a melhoria). Testei tanto em Linux quanto em MacOS X e creio que funcionará sem problemas em Windows com Cygwin — ou então convertendo-o para DOSKEY.
Ah, e ainda é possível fazer isto aqui:
$ export _JUJU="Ubuntu_64_Juju" $ export _CHEF="Ubuntu_64_Chef" $ export _WYLD="CentOS_64_WildFly" $ vbrun $_«TAB» $_CHEF $_JUJU $_WYLD $ vbrun $_WYLD Waiting for VM "CentOS_64_WildFly" to power on... VM "CentOS_64_WildFly" has been successfully started.
Para usar a tecla «TAB» ao seu favor.
E para fechar
Creio que não cheguei nem em 10% das opções do VBoxManage mas este pouco já é o suficiente para mostrar o que se pode fazer sem precisar usar a interface gráfica do VirtualBox cuja sensação é de que não incorpora novas funcionalidades desde a versão 2!
Basta consultar a documentação para ver a quantidade de recursos interessantes acessíveis somente pelo VBoxManage.
Autor: GIOVANNI NUNES
Retirado de: https://giovannireisnunes.wordpress.com/2015/10/30/virtualbox-na-linha-de-comando/
Em: 25/11/2018
Nenhum comentário:
Postar um comentário
Observação: somente um membro deste blog pode postar um comentário.