Как я могу заставить Vagrant запускать сервер при запуске?

29

Я хочу, чтобы Vagrant запускал сервер Play в папке / vagrant / каждый раз, когда я запускаю vagrant. Помещение @reboot в crontab не работает, потому что скрипт запускается до подключения папки / vagrant /.

неправильное имя пользователя
источник

Ответы:

16

Вместо использования crontab, вы пытались использовать Upstart ?

Vagrant генерирует событие «vagrant-mount», когда общая папка монтируется, так что вы можете создать файл upstart conf, скажем /etc/init/play.conf, для запуска при отправке этого события:

description "Play server"
start on vagrant-mounted

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

... rest of config file for starting Play server ...
billyw
источник
Благодарность! Не уверен, почему я получил ошибку /bin/sh: 1: [: =: unexpected operator, поэтому я просто раскомментировал эту строку.
неправильное имя
К сожалению! Я отредактировал пост так, что синтаксис правильный.
Billyw
Может start on vagrant-mounted MOUNTPOINT=/vagrantработать так же?
km6zla
Для моего сценария выскочки start on vagrant-mountedне работает по какой-то причине. Не знаю почему и вообще не знаю, как его отладить.
MAECTPO
44

Я обнаружил, что использовать отдельного бродячего поставщика с опцией run : "always"намного проще, например:

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

См. Https://docs.vagrantup.com/v2/provisioning/shell.html для полной документации.

culmat
источник
3
Приведенная ссылка ничего не говорит о "always". Возможно это было удалено в более новой версии.
Рафаэль Эйнг
6
@RafaelEyng документы для этого находятся по адресу vagrantup.com/docs/provisioning/basic_usage.html , поищите «БЕРИТЕ ОДИН ИЛИ ВСЕГДА»
Даниэль Комптон
Проверено в 2017 году. Работает как шарм. Это лучший ответ и все еще актуальный.
iaforek