ubuntu - software - vagrant up
Iniciar Vagrant VM en el arranque del host (4)
Soy nuevo en vagrant y he configurado un par de vm vagantes que utilizo para fines de desarrollo y prueba. Mi problema es que no puedo hacer que estos cuadros se inicien automáticamente en mi máquina (Ubuntu). Es realmente molesto ir a la carpeta y vagrant up
cada máquina cada vez que mi máquina host se inicia.
He intentado agregar un cronjob que parece cd path/to/vm/folder && vagrant up
pero esto no parece estar funcionando.
También probé un cronjob para VBoxManage
pero VBoxManage
cambia el nombre de la VM (en lugar del número / versión ''vmname_version'') cada vez que la VM arranca.
Aquí hay un script de inicio que se encuentra en http://uhowto.urbylog.info/post/54097294891/an-upstart-script-to-launch-vagrant-box-automatically
Una secuencia de comandos de inicio rápido para iniciar vagrant box de forma automática A veces puede ser necesario iniciar máquinas virtuales erráticas automáticamente en el arranque del host. Del mismo modo, proporcionar un apagado correcto para un invitado cuando el host se apaga o reinicia. A continuación se muestra un ejemplo de un script de inicio para iniciar / detener un cuadro errante en nombre del usuario randomjoe. Cambie el nombre de usuario y el directorio Vagrantfile en el script a continuación. Nombre su archivo de configuración upstart descriptivamente. Cree un archivo /etc/init/*.conf para cada Vagrantfile que necesita para iniciar el sistema. /etc/init/vagrant-precise32.conf:
description "Start vagrant precise32 box on system startup"
author "uHOWTO"
env VAGRANTUSR=randomjoe
env VAGRANTBOXPATH=/home/randomjoe/vagrantboxes/precise32
start on stopped rc
stop on runlevel [016]
pre-start script
cd ${VAGRANTBOXPATH}
su -c "/usr/bin/vagrant up" ${VAGRANTUSR}
end script
post-stop script
cd ${VAGRANTBOXPATH}
su -c "/usr/bin/vagrant halt" ${VAGRANTUSR}
end script
El trabajo de Cron no encaja en este caso de uso, es para trabajos programados.
Como está ejecutando Ubuntu como host, recomiendo usar /etc/rc.local
, coloque los comandos en el script rc.local
que se ejecuta al final del proceso de inicio.
Se verá así
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
cd /path/to/vagrant_vm1 && vagrant up
cd /path/to/vagrant_vm2 && vagrant up
exit 0
NOTA : Habrá conflictos de puertos en el host si inicia más de 1 cajas de Vagrant con el mismo modo de red: NAT (predeterminado), que de forma predeterminada usa la misma regla de reenvío de puertos => invitado 22 al host 2222.
Si necesita iniciar más de 1 recuadros (NAT), considere usar una red pública (puenteada) o use VBoxManage controlvm
para iniciar las máquinas virtuales, consulte la respuesta en Dos máquinas Vagrant separadas, Windows Host, PuTTY: ¿cómo?
He terminado con un simple trabajo cron. Tuve que dormir, de lo contrario, Virtualbox se quejó de que no se había inicializado correctamente.
@reboot cd /home/myuser/VMs/VagrantBox && sleep 20; /bin/su -c "/usr/bin/vagrant up" myuser
Terminé clonando las VboxManage
con VboxManage
y simplemente utilizando VBoxManage startvm $vm --type headless
en un script init.d