2013-08-07 3 views
16

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

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

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

ответ

12

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

При запуске Ubuntu как хоста, я рекомендую использовать /etc/rc.local, поместите команды в скрипт rc.local, который будет выполнен в конце процесса 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 (по умолчанию), которые по по умолчанию используется одно и то же правило переадресации портов => guest 22 на хост 2222.

Если вам нужно запустить более 1 коробки (NAT), рассмотрите возможность использования сети общего пользования (мостовой) или используйте VBoxManage controlvm для запуска виртуальных машин, см. ответ в Two separate Vagrant machines, windows host, PuTTY - how?

+0

В теории, это то, что я хотел, однако Vagrant, кажется, возникли некоторые проблемы с этим, он достигает «Ожидание VM для загрузки», но не успешно загружается, он заканчивается с ошибкой, говоря «Не удалось подключитесь к VM через SSH. Пожалуйста, проверьте, что виртуальная машина успешно загружена , посмотрев на GUI VirtualBox. ". Спасибо, в любом случае! –

+0

@ShrikantPatnaik См. Обновленный ответ. Я думаю, что вы сталкиваетесь с проблемой конфликта портов, открывая несколько бродячих боксов. –

+0

Наа, порты и все настроены правильно, потому что у меня все они работают одновременно без проблем, controlvm работал, но мне пришлось клонировать их, поскольку я ответил в своем собственном ответе на вопрос. –

0

Я кончался клонированием ВМ с VboxManage и только с помощью VBoxManage startvm $vm --type headless в init.d сценарии

+0

Теперь, когда вы довольны 'VBoxManage' или' VBoxHeadless', бродяга все равно не работает. –

+0

В значительной степени, но я действительно думаю, что он немного взломан. –

4

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

выскочки скрипт для запуска бродячего окна автоматически Иногда это может быть необходимо автоматически запускать виртуальные виртуальные машины при загрузке хоста. Аналогичным образом обеспечивается грациозное завершение работы гостя, когда хост отключается или перезапускается. Ниже приведен пример сценария выскочки для запуска/остановки бродячего бокса от имени случайного пользователя. Измените имя пользователя и файл Vagrantfile в приведенном ниже скрипте. Назовите описательный файл конфигурации выскочки. Создайте один файл /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 
-1

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

@reboot cd /home/myuser/VMs/VagrantBox && sleep 20; /bin/su -c "/usr/bin/vagrant up" myuser 
Смежные вопросы