Debian - inicializando VMs (VirtualBox) no boot
Publicado por Cláudio Souza Jr. (última atualização em 27/10/2014)
[ Hits: 5.434 ]
Primeiro cumpre esclarecer que o foco está no VirtualBox, instalado em uma distribuição Debian 7.6.0 (32 bits), mas isso deve ser possível com qualquer outro virtualizador e/ou versão Linux, desde que feitas as devidas adaptações.
O procedimento é muito simples. Criamos um script que usa configurações estáticas. Logicamente, este programa requer VirtualBox instalado e funcionando, com o aplicativo vboxmanage devidamente configurado. O apt-get resolve isso na maioria dos casos em distribuições Debian (ou baseadas em Debian). Também requer máquinas virtuais criadas e previamente configuradas. Lembre-se de que o usuário que cria as VMS é o único que poderá controlá-las. Aqui no site tem muita dica boa sobre criação e administração de VMS (inclusive na linha de comando), e na internet tem mais uma pá de coisas muito boas (inclusive em inglês), portanto, não mencionarei esses procedimentos aqui. Pouco provável o contrário, mas os programas "su" e "update-rc.d" também devem estar instalados. O interpretador de comandos que eu usei foi o bash.
Considerações:
1. Como usuário root do sistema, grave o arquivo/script no diretório /usr/local/bin";
2. Com o arquivo/script gravado, dê permissão de execução a ele com o comando:
# chmod +x /usr/local/bin/nome_do_script
3. Crie um link simbólico desse arquivo para o diretório "/etc/init.d":
# ln -s /usr/local/bin/nome_do_script /etc/init.d
4. Atualize a lista de programas iniciados no boot com o comando:
# update-rc.d nome_do_script defaults
Para ser mais prático, e considerando que a intenção é rodar esses comandos no boot/desligamento, você também poderia gravar/criar o arquivo/script em "/etc/init.d". Eu preferi fazer um link simbólico. Usar o usuário root para gravação do arquivo/script é uma atitude não obrigatória, fica a seu critério (logicamente, há implicações decorrentes). Dependendo das configurações das VMS ou/e da capacidade de processamento/carga do seu servidor, isso pode atrasar um pouco a inicialização ou desligamento da máquina. Perceba que todas as VMS têm o mesmo dono.
#!/bin/bash ### BEGIN INIT INFO # Provides: nome_do_script # Required-Start: $local_fs $remote_fs $network $syslog # Required-Stop: $local_fs $remote_fs $network $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Script de ativacao das maquinas virtuais. # Description: Script de ativacao e desativacao das maquinas virtuais no boot e no desligamento do sistema. ### END INIT INFO # # Declare os nomes das VMS a ativar/desativar no boot e no desligamento da maquina array=(nomevm1 nomevm2 nomevm3) # Funcao "iniciar" que vai disparar o metodo "start" iniciar(){ echo "Inicializando as maquinas virtuais..."; for VmList in ${array[@]} do su - usuario_dono_vms -c "vboxmanage controlvm $VmList startvm --type headless >> /dev/null"; echo "Maquina $VmList inicializada..."; echo "----------------------------"; done sleep 1; } # Funcao "parar" que vai disparar o metodo "stop" parar(){ echo "Interrompendo as maquinas virtuais..."; for VmList in cat ${array[@]} do su - usuario_dono_vms -c "vboxmanage controlvm $VmList acpipowerbutton >> /dev/null"; echo "Maquina $VmList desligada..."; echo "----------------------------"; done sleep 1; } # Gatilhos das funcoes case "$1" in "start") iniciar ;; "stop") parar ;; "restart") parar; iniciar ;; *) echo "Use os parametros start, stop ou restart." esac
mkzeowmp - zeo mount point para PZP (python, zope e plone)
Fazer backup de todas base de dados no PostgreSQL
Nenhum comentário foi encontrado.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Não to conseguindo resolver este problemas ao instalar o playonelinux (1)
Excluir banco de dados no xampp (1)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta