2016-05-13 13 views
18

Wiem o skrypcie obsługi administracyjnej, ale jest to inny skrypt, o który pytam. Chcę, aby skrypt był uruchamiany po każdym restarcie gościa.Vagrant wykona skrypt lub polecenie po każdym ponownym uruchomieniu gościa (vagrant up)

Używam zaprawy do skorup.

config.vm.provision :shell, path: "vagrant/bootstrap.sh" 

Nie mogę umieścić moich poleceń w tym skrypcie, który chcę uruchomić po każdym ponownym uruchomieniu.

Zasadniczo chcę, aby jedna z moich aplikacji została uruchomiona, gdy użytkownik wykona vagrant up.

Mój gość Ubuntu 1404 sprawdzony i jedno rozwiązanie znalazłem na temat opierając się na mój gość -

sudo crontab -e 
#add the following line 
@reboot sh /path/to/my_script_on_guest.sh 

mogę spróbować zrobić to w moim skrypcie rezerw, ale sudo crontab -e prosi redaktora i mam w rodzaju interaktywnego dodawania linii. Ponieważ plik crontab nie jest ustalone, że nie wiem, czy to jest wykonalne jeden liner edycje plików jak

echo '@reboot sh /path/to/my_script_on_guest.sh' >> crontab_file

Jestem zgadywania, że ​​musi to być gościem OS specyficzna sprawa.

Czy można to osiągnąć za pomocą Vagrant?

EDYCJA: poprawiona z modułu udostępniania ssh do obiektu powłoki powłoki.

Odpowiedz

27

można użyć run: 'always'

config.vm.provision :shell, path: "vagrant/bootstrap.sh", run: 'always' 

Pozwoli to upewnić się, że polecenia są wykonywane za każdym razem, gdy VM jest wyjściowego (Vagrant górę lub włóczęga reload)

Jeśli potrzebujesz tylko niektóre polecenia są zawsze uruchamiane można podzielić skrypt

config.vm.provision :shell, path: "vagrant/bootstrap1.sh" 
config.vm.provision :shell, path: "vagrant/bootstrap2.sh", run: 'always' 
config.vm.provision :shell, path: "vagrant/bootstrap3.sh" 

skrypt zostanie uruchomiony w porządku, bootstrap1 potem 2 potem 3, gdy urządzenie jest najpierw zabezpieczony

przy każdym następnym uruchomieniu vagrant up (lub ponownym załadowaniu) tylko bootstrap2 zostanie uruchomiony

+0

Dzięki. Ale mam inne kroki inicjowania w moim bootstrap.sh, które nie są idempotentne. Czy jest jakikolwiek inny hak w cyklu życia? –

+0

tak jasne, więc podziel swój skrypt i spraw, aby rzeczy były niezauważalne w innym skrypcie i nie uruchamiaj się zawsze - skrypty są uruchamiane w kolejności –

+0

Właśnie próbowałem tego i to działa :) dziękuję. –