Запуск 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