2016-05-11 3 views
14

Я хочу использовать поле ubuntu/xenial64 для создания двух отдельных виртуальных машин для двух отдельных проектов. Я определил Vagrantfile в двух отдельных каталогах проектов и добавил строку config.vm.box = "ubuntu/xenial64" каждому.Ошибка Vagrant - машина VirtualBox с именем уже существует

Первая коробка ботинок успешно. Но когда я vagrant up для второго проекта, я получаю ошибку

A VirtualBox machine with the name 'ubuntu-xenial-16.04-cloudimg' already exists. 

В документации бродячей в это ясно написано, что

Коробка глобально сохраняется для текущего пользователя. Каждый проект использует поле в качестве исходного изображения для клонирования и никогда не изменяет фактическое базовое изображение . Это означает, что если у вас есть два проекта с использованием поля hashicorp/exact64, который мы только что добавили, добавление файлов в одном гостевом машине не повлияет на другую машину.

Зачем мне это делать?

Я уже проверил other similar questions, но я не понимаю их решение об удалении существующих виртуальных машин, которые, как представляется, имеют одинаковое имя. Согласно приведенной выше цитате из бродяг, это не обязательно. Я что-то упускаю?

+0

Я получаю ощущение, что это должен делать с тем, как/xenial64' была создана коробка 'убунту. Я повторил тот же эксперимент с другим полем 'gbarbieru/xenial' и что у него нет такой проблемы при создании нескольких виртуальных машин. Когда я вижу графический интерфейс VirtualBox, я вижу, что имя виртуальной машины автоматически переименовывается в имя папки при загрузке. – Jayesh

+0

Можно ли указать имя без прямого редактирования окна?Я предпочитаю использовать настройки восходящего потока по умолчанию и позволять бродячим абстрактным всем этим прочь ... Это, и я предпочел бы открыть свою коробку сразу после «git checkout» вместо проверки, а затем отредактировать поле «VagrantFile» ' – Tor

ответ

19

Вам не нужно удалять другую виртуальную машину, и, действительно, вы можете иметь много виртуальных машин из той же коробки.

Ваша ошибка может иметь отношение к VirtualBox Имя виртуальной машины, созданной в VirtualBox. Если вы переопределили свойство, чтобы установить это имя и его одноименное имя в ваших двух проектах, то произойдет столкновение, см. Это answer чтобы увидеть различные способы, чтобы определить имя виртуальной машины

так либо оставить бродяги определить имя VM или убедитесь, что у вас есть уникальное имя виртуальной машины в вашем другом проекте, и он будет работать просто отлично

UPDATE Я проверяю этот конкретный блок и содержит следующий файл Vagrant

Vagrant.configure("2") do |config| 
    config.vm.base_mac = "02101FC67BA9" 
    config.ssh.username = "ubuntu" 
    config.ssh.password = "c1580f876b655137c6c35b69" 
    config.vm.synced_folder '.', '/vagrant', disabled: true 

    config.vm.provider "virtualbox" do |vb| 
    vb.name = "ubuntu-xenial-16.04-cloudimg" 
    vb.customize [ "modifyvm", :id, "--uart1", "0x3F8", "4" ] 
    vb.customize [ "modifyvm", :id, "--uartmode1", "file", File.join(Dir.pwd, "%s-console.log" % vb.name) ] 
    end 
end 

поэтому убедитесь, что в вашем Vagrantfile переопределить это свойство

config.vm.provider "virtualbox" do |vb| 
    vb.name = "your specific project name" 

и изменить vb.name быть уникальным для каждого из ваших проектов.

+0

noob вопрос: как вам удалось просмотреть Vagrantfile' ubuntu/xenial64'? – Jayesh

+4

его в '~/.vagrant.d/boxes/ubuntu-VAGRANTSLASH-xenial64/20160509.0.0/virtualbox/Vagrantfile' –

+1

Спасибо - я просто удалил hardcoded vb.name из Vagrantfile и смог развернуть несколько бродяг как нормальные сейчас. – robo

2

Я обнаружил, что проще изменить исходный код Vagrantfile (расположенный ~/.vagrant.d/boxes/ubuntu-VAGRANTSLASH-xenial64/<VERSTION>/virtualbox/Vagrant‌​file), а не каждый раз обдумывать уникальные имена виртуальных машин.

Работа конфигурации из Vagrantfile (коробки!):

include_vagrantfile = File.expand_path("../include/_Vagrantfile", __FILE__) 
load include_vagrantfile if File.exist?(include_vagrantfile) 

Vagrant.configure("2") do |config| 
    config.vm.base_mac = "0223C61ABA59" 
    config.ssh.username = "ubuntu" 
    config.ssh.password = "86f7d0e04910475d8789aa8f" 
    config.vm.synced_folder '.', '/vagrant', disabled: true 

    config.vm.provider "virtualbox" do |vb| 
    vb.customize [ "modifyvm", :id, "--uart1", "0x3F8", "4" ] 
    end 
end 
Смежные вопросы