Запуск Vagrant VM при загрузке хоста

Я новичок в бродяге и создал пару бродячих vm, которые я использую для разработки и тестирования. Моя проблема в том, что я не могу автоматически запускать эти ящики на своей машине (Ubuntu). Это действительно раздражает, чтобы идти в папку и vagrant up каждый компьютер каждый раз, когда запускается мой хост-компьютер.

Я попытался добавить cronjob, который выглядит как cd path/to/vm/folder && vagrant up, но это, похоже, не работает.

Я также попробовал cronjob для VBoxManage, но бродяга меняет имя виртуальной машины (а скорее число/версию "vmname_version" ) каждый раз, когда VM загружается.

Ответы

Ответ 1

Задача Cron не вписывается в этот прецедент, она предназначена для запланированных заданий.

Когда вы используете Ubuntu в качестве хоста, я бы рекомендовал использовать /etc/rc.local, поместить команды в rc.local script, который выполняется в конце процесса init.

Это будет выглядеть как

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.    
cd /path/to/vagrant_vm1 && vagrant up
cd /path/to/vagrant_vm2 && vagrant up
exit 0

ПРИМЕЧАНИЕ. На хосте будут конфликты портов, если вы запускаете более 1 боксерских ящиков с одним и тем же сетевым режимом - NAT (по умолчанию), который по умолчанию использует одно и то же правило переадресации портов = > гость 22 для размещения 2222.

Если вам нужно запустить более 1 коробки (NAT), рассмотрите возможность использования общедоступной сети (мостовой) или используйте VBoxManage controlvm для запуска виртуальных машин, обратитесь к ответу в Два отдельных Бродячие машины, Windows Host, PuTTY - как?

Ответ 2

Вот запуск script, найденный в http://uhowto.urbylog.info/post/54097294891/an-upstart-script-to-launch-vagrant-box-automatically

Выскочка script для автоматического запуска брандмауэра Иногда может возникнуть необходимость автоматически запускать виртуальные виртуальные машины на хосте. Аналогичным образом обеспечивается грациозное завершение работы гостя, когда хост отключается или перезапускается. Ниже приведен пример выскочки script для запуска/остановки бродячего бокса от имени случайного пользователя. Измените имя пользователя и каталог Vagrantfile в script ниже. Назовите описательный файл конфигурации выскочки. Создайте один файл /etc/init/ *.conf для каждого файла Vagrant, который вам нужен и запускается при загрузке системы. /etc/init/vagrant -precise32.conf:

description "Start vagrant precise32 box on system startup"
author "uHOWTO"
env VAGRANTUSR=randomjoe
env VAGRANTBOXPATH=/home/randomjoe/vagrantboxes/precise32
start on stopped rc
stop on runlevel [016]

pre-start script
    cd ${VAGRANTBOXPATH}
    su -c "/usr/bin/vagrant up" ${VAGRANTUSR}
end script

post-stop script
    cd ${VAGRANTBOXPATH}
    su -c "/usr/bin/vagrant halt" ${VAGRANTUSR}
end script

Ответ 3

Я закончил клонирование виртуальной машины VboxManage и просто использовал VBoxManage startvm $vm --type headless в файле init.d script

Ответ 4

У меня закончилась простая работа cron. Я должен был уснуть, иначе Virtualbox пожаловался, что он не был правильно инициализирован.

@reboot cd /home/myuser/VMs/VagrantBox && sleep 20; /bin/su -c "/usr/bin/vagrant up" myuser