Ett simpelt script som avslutar körande Vagrant burkar vid avstängning av din dator.
#!/bin/sh -e ### BEGIN INIT INFO # Provides: something warm and fuzzy # Required-Start: vboxdrv # Required-Stop: vboxdrv # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts suspended vagrant boxes and suspends running vagrant boxes # Description: ### END INIT INFO # presumably only users with valid login shells are running vagrant boxes validShells=$(cat /etc/shells | grep -v "#" | sed ':a;N;$!ba;s/\n/|/g') userList=$(grep -E "$validShells" /etc/passwd | awk -F ':' ' { print $1 } ' | tr "\\n" " ") case $1 in start) # loop thru every user for user in $userList; do # loop thru users suspended boxes for vm in $(su -c "vagrant global-status" $user 2>/dev/null | grep saved | awk ' { print $5 } '); do cd $vm >/dev/null su -c "vagrant up" $user su -c "vagrant status" $user > /dev/null # update global-status cache done done ;; stop) for user in $userList; do for vm in $(su -c "vagrant global-status" $user 2>/dev/null | grep running | awk ' { print $5 } '); do cd $vm > /dev/null su -c "vagrant suspend" $user su -c "vagrant status" $user > /dev/null # update global-status cache done done ;; status) for user in $userList; do echo "$user's vagrant box status" echo "------------------------------------------------------------------------" su -c "vagrant global-status 2> /dev/null" $user echo echo done ;; *) echo "Usage: $0 {start|stop|status}" >&2 exit 1 ;; esac exit 0
Installera med:
Redigera /etc/init.d/vagrant-boxes
och klistra in ovanstående (eller ladda ner filen här). Sen kör du:
# update-rc.d vagrant-boxes defaults 99 01
99 är sekvensnumret, måste vara högre än det du har för Virtualbox (som använder 20, vilket är standard). Fungerar det exempelvis att spara boxarna vid avstängning men de inte startas igen vid start, dubbelkolla denna siffran. Andra siffran är i vilken ordning när du stänger av datorn, så 01 betyder att det är det första den gör (vilket kan vara bra).