2013-08-07 13 views
16

Jestem nowicjuszem i założyłem kilka vmów vagrantów, których używam do celów programistycznych i testowych. Mój problem polega na tym, że nie mogę automatycznie uruchomić tych skrzynek na moim komputerze (Ubuntu). To jest naprawdę denerwujące, aby przejść do folderu i vagrant up każdej maszyny za każdym razem, gdy uruchomi się mój host.Uruchamianie maszyny Vagrant VM na hoście startowym

Próbowałem dodać cronjob, który wygląda jak cd path/to/vm/folder && vagrant up, ale to nie wydaje się działać.

Próbowałem również cronjob dla VBoxManage, ale vagrant zmienia nazwę maszyny wirtualnej (zamiast numeru/wersji "vmname_version") za każdym razem, gdy uruchamiana jest maszyna wirtualna.

Odpowiedz

12

Zadanie Cron nie pasuje do tego przypadku użycia, jest przeznaczone do zadań zaplanowanych.

Ponieważ używasz Ubuntu jako hosta, polecam używać /etc/rc.local, umieszczać polecenia w skrypcie rc.local, który jest wykonywany pod koniec procesu init.

będzie to wyglądać tak

#!/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 

UWAGA: Nie będzie portowe konflikty na przyjmującego jeśli zaczniesz więcej niż 1 pudełka Vagrant z tym samym trybie sieciowym - NAT (domyślnie), który przez domyślnie użyj tej samej reguły przekierowania portów => gość 22, aby host 2222.

Jeśli potrzebujesz uruchomić więcej niż 1 skrzynkę (NAT), rozważ użycie sieci publicznej (zmostkowanej) lub użyj VBoxManage controlvm do uruchomienia maszyn wirtualnych, zapoznaj się z odpowiedź w Two separate Vagrant machines, windows host, PuTTY - how?

+0

W teorii jest to, co chciałem jednak Vagrant wydaje się mieć pewne problemy z tym, osiąga „Waiting for VM do uruchamiania”, ale nie udało uruchomić go, to kończy się o błędzie „Nie udało się połączyć się z maszyną wirtualną za pośrednictwem SSH. Sprawdź, czy maszyna wirtualna pomyślnie uruchomiła się , patrząc na interfejs graficzny VirtualBox. ". Dzięki W każdym razie! –

+0

@ShrikantPatnaik Zobacz zaktualizowaną odpowiedź. Myślę, że trafiasz w konflikt z portem, uruchamiając wiele skrzynek dla vagrantów. –

+0

Naa, Porty i wszystko jest skonfigurowane poprawnie, ponieważ wszystkie mam uruchomione jednocześnie bez żadnych problemów, kontrola działała, ale musiałem je sklonować, ponieważ odpowiedziałem w mojej własnej odpowiedzi na to pytanie. –

0

skończyło się klonowanie VM z VboxManage i tylko przy użyciu VBoxManage startvm $vm --type headless w skrypcie init.d

+0

Teraz, gdy jesteś zadowolony z 'VBoxManage' lub' VBoxHeadless', wędrowiec i tak jest nieobecny. –

+0

Dość dużo, ale uważam, że jest lekko hacky. –

4

Oto skrypt startowy znaleźć na http://uhowto.urbylog.info/post/54097294891/an-upstart-script-to-launch-vagrant-box-automatically

dorobkiewicz skryptu do uruchomienia Vagrant pole automatycznie Czasami może to być konieczne do automatycznego uruchamiania wirtualnych maszyn wirtualnych podczas rozruchu hosta. Podobnie, zapewniając pełne wdzięku zamknięcie dla gościa, gdy host jest wyłączany lub restartowany. Poniżej znajduje się przykład skryptu upstart do uruchamiania/zatrzymywania skrzynki użytkownika w sieci w imieniu użytkownika randomjoe. Zmień nazwę użytkownika i katalog plików Vagrant w poniższym skrypcie. Nazwij swój plik konfiguracji startowej w sposób opisowy. Utwórz jeden plik /etc/init/*.conf dla każdego pliku Vagrant, którego potrzebujesz do uruchomienia systemu. /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 skończyło się to proste zadanie cron. Musiałem się przespać, inaczej Virtualbox skarżył się, że nie został poprawnie zainicjowany.

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