Как я могу заставить 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 ...

Благодарность! Не уверен, почему я получил ошибку /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 для полной документации.


3
Приведенная ссылка ничего не говорит о "always". Возможно это было удалено в более новой версии.
Рафаэль Эйнг

6
@RafaelEyng документы для этого находятся по адресу vagrantup.com/docs/provisioning/basic_usage.html , поищите «БЕРИТЕ ОДИН ИЛИ ВСЕГДА»
Даниэль Комптон

Проверено в 2017 году. Работает как шарм. Это лучший ответ и все еще актуальный.
iaforek
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.