Wie kann ich Vagrant dazu bringen, den Server beim Start zu starten?

29

Ich möchte, dass Vagrant den Play-Server jedes Mal im Ordner / vagrant / startet, wenn ich Vagrant aufmache. Das Einfügen von @reboot in die crontab funktioniert nicht, da das Skript ausgeführt wird, bevor die Verbindung zum Ordner / vagrant / hergestellt ist.

falscher Benutzername
quelle

Antworten:

16

Haben Sie versucht, Upstart anstelle von crontab zu verwenden ?

Vagrant gibt ein "Vagrant-Mounted" -Ereignis aus, wenn der freigegebene Ordner gemountet wird. Sie können also beispielsweise eine Upstart-Konfigurationsdatei erstellen /etc/init/play.conf, die ausgeführt wird, wenn dieses Ereignis ausgegeben wird:

description "Play server"
start on vagrant-mounted

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

... rest of config file for starting Play server ...
billyw
quelle
Vielen Dank! Ich bin mir nicht sicher, warum ich den Fehler erhalten habe /bin/sh: 1: [: =: unexpected operator, daher habe ich diese Zeile nur auskommentiert.
falscher Benutzername
Hoppla! Ich habe den Beitrag so bearbeitet, dass die Syntax korrekt ist.
Billyw
Kann auch start on vagrant-mounted MOUNTPOINT=/vagrantarbeiten?
km6zla
Mein Startup-Skript start on vagrant-mountedfunktioniert aus irgendeinem Grund nicht. Ich weiß nicht warum und weiß überhaupt nicht, wie ich es debuggen soll.
Maectpo
44

Ich fand die Verwendung eines separaten Provisioners für Vagabunden mit der Option run : "always"viel einfacher, z. B .:

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

Das vollständige Dokument finden Sie unter https://docs.vagrantup.com/v2/provisioning/shell.html .

culmat
quelle
3
Der angegebene Link sagt nichts darüber aus "always". Möglicherweise wurde dies in einer neueren Version entfernt.
Rafael Eyng
6
@RafaelDie entsprechenden Dokumente finden Sie unter vagrantup.com/docs/provisioning/basic_usage.html . Suchen Sie nach "RUN ONCE OR ALWAYS"
Daniel Compton,
Im Jahr 2017 erneut getestet. Funktioniert wie ein Zauber. Dies ist die beste Antwort und immer noch aktuell.
Iaforek