Jak mogę zmusić Vagrant do uruchomienia serwera przy uruchomieniu?

29

Chcę, aby Vagrant uruchamiał serwer Play w folderze / vagrant / za każdym razem, gdy robię włóczęgę. Umieszczenie @reboot na crontabie nie działa, ponieważ skrypt jest uruchamiany przed podłączeniem folderu / vagrant /.

zła nazwa użytkownika
źródło

Odpowiedzi:

16

Czy zamiast crontab próbowałeś użyć Upstart ?

Vagrant emituje zdarzenie „zamontowane przez włóczęgę”, gdy folder współdzielony jest podłączony, aby można było utworzyć plik conf na starcie, powiedzmy /etc/init/play.conf, uruchamiany podczas emitowania tego zdarzenia:

description "Play server"
start on vagrant-mounted

pre-start script
    [ "$MOUNTPOINT" == "/vagrant" ] || stop
end script

... rest of config file for starting Play server ...
billyw
źródło
Dzięki! Nie jestem pewien, dlaczego dostałem błąd /bin/sh: 1: [: =: unexpected operator, więc po prostu odkomentowałem ten wiersz.
wrongusername
Ups! Zredagowałem post, aby składnia była poprawna.
billyw
Czy może również start on vagrant-mounted MOUNTPOINT=/vagrantdziałać?
km6zla,
Ponieważ mój skrypt startowy start on vagrant-mountedz jakiegoś powodu nie działa. Nie wiem dlaczego i wcale nie wiem, jak go debugować.
maectpo
44

Zauważyłem, że używanie oddzielnego włóczęgi z opcją run : "always"jest o wiele łatwiejsze, np .:

config.vm.provision :shell, path: "yourStartUp.sh", run: "always", privileged: false

Zobacz https://docs.vagrantup.com/v2/provisioning/shell.html dla pełnego dokumentu.

culmat
źródło
3
Podany link nic nie mówi "always". Być może zostało to usunięte w nowszej wersji.
Rafael Eyng
6
@RafaelEyng dokumenty znajdują się na stronie vagrantup.com/docs/provisioning/basic_usage.html , wyszukaj „URUCHOM RAZ LUB ZAWSZE”
Daniel Compton
Przetestowane w 2017 roku. Działa jak urok. To najlepsza odpowiedź i wciąż aktualna.
iaforek