2013-08-07 12 views
16

Sono nuovo per vagabondo e ho creato un paio di vm vagabondi che uso per scopi di sviluppo e test. Il mio problema è che non posso ottenere queste scatole per l'avvio automatico sulla mia macchina (Ubuntu). È davvero fastidioso andare alla cartella e a vagrant up ogni macchina ogni volta che si avvia la macchina host.Avvio di VM Vagrant su avvio host

Ho provato ad aggiungere un cronjob che assomiglia a cd path/to/vm/folder && vagrant up ma questo non sembra funzionare.

Ho anche provato un cronjob per VBoxManage ma cambia vagamente il nome della VM (piuttosto il numero/versione 'vmname_version') ogni volta che la VM si avvia.

risposta

12

Il processo cron non si adatta a questo caso d'uso, è per lavori programmati.

Poiché si utilizza Ubuntu come host, è consigliabile utilizzare /etc/rc.local, inserire i comandi nello script rc.local che viene eseguito alla fine del processo di inizializzazione.

Sarà simile a questa

#!/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: Ci saranno conflitti porta sul server se si avvia più di 1 scatole Vagrant con la stessa modalità di rete - NAT (di default), che per default usa la stessa regola di port forwarding => guest 22 all'host 2222.

Se è necessario avviare più di 1 box (NAT), prendere in considerazione l'utilizzo di una rete pubblica (ponticellata) o utilizzare VBoxManage controlvm per avviare le VM, fare riferimento al rispondi in Two separate Vagrant machines, windows host, PuTTY - how?

+0

In teoria questo è quello che volevo però Vagrant sembra avere alcuni problemi con questo, raggiunge "In attesa di VM per l'avvio", ma non con successo il boot, esso finisce con un errore che dice "Impossibile connettersi a VM tramite SSH. Verificare la VM avviata correttamente guardando la GUI di VirtualBox. ". Grazie comunque! –

+0

@ShrikantPatnaik Vedere la risposta aggiornata. Penso che tu stia colpendo il problema del conflitto di porte avviando più caselle vagabonde. –

+0

Naa, Porte e tutto sono configurati correttamente perché ho tutti in esecuzione simultaneamente senza problemi, il controlvm ha funzionato, ma ho dovuto clonarli come ho risposto nella mia risposta alla domanda. –

0

ho finito per la clonazione del VM con VboxManage e usando solo VBoxManage startvm $vm --type headless in uno script init.d

+0

Ora che sei soddisfatto di 'VBoxManage' o' VBoxHeadless', il vagabondo è comunque fuori dall'immagine. –

+0

Praticamente, ma penso che sia leggermente hacky. –

4

Qui è uno script di avvio trovato alla http://uhowto.urbylog.info/post/54097294891/an-upstart-script-to-launch-vagrant-box-automatically

Uno script di upstart per lanciare dialogo vagabondo automaticamente volte potrebbe essere necessario avviare le macchine virtuali vagabonde automaticamente all'avvio dell'host. Allo stesso modo, fornendo un arresto regolare per un ospite quando l'host viene spento o riavviato. Di seguito è riportato un esempio di script upstart per l'avvio/l'arresto di una casella vagabonda per conto dell'utente randomjoe. Cambia nome utente e dir Vagrantfile nello script seguente. Assegna un nome descrittivo al file di configurazione di Upstart. Crea un file /etc/init/*.conf per ogni Vagrantfile necessario e attivo all'avvio del 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 
-1

I'v è conclusa con un semplice processo di cron. Ho dovuto addormentarmi, altrimenti Virtualbox si è lamentato che non era inizializzato correttamente.

@reboot cd /home/myuser/VMs/VagrantBox && sleep 20; /bin/su -c "/usr/bin/vagrant up" myuser