Ошибка ваграннта - машина VirtualBox с именем уже существует
Я хочу использовать ubuntu/xenial64
для создания двух отдельных виртуальных машин для двух отдельных проектов. Я определил Vagrantfile в двух отдельных каталогах проекта и добавил строку config.vm.box = "ubuntu/xenial64"
к каждому.
Первый бокс успешно загружается. Но когда я делаю vagrant up
для второго проекта, я получаю ошибку
A VirtualBox machine with the name 'ubuntu-xenial-16.04-cloudimg' already exists.
В документации Vagrant четко написано, что
Коробки хранятся в глобальном масштабе для текущего пользователя. Каждый проект использует в качестве исходного изображения для клонирования и никогда не изменяет фактическое базовое изображение. Это означает, что если у вас есть два проекта, hashicorp/exact64, который мы только что добавили, добавив файлы в один гость машина не будет влиять на другую машину.
Почему тогда я получаю эту ошибку?
Я уже проверил другие подобные вопросы, но я не понимаю их решение об удалении существующих виртуальных машин, которые, как представляется, имеют одинаковое имя. Согласно приведенной выше цитате из бродяг, это не обязательно. Я что-то пропустил?
Ответы
Ответ 1
Вам не нужно удалять другую виртуальную машину, и вы действительно можете иметь много виртуальных машин из одного окна.
ваша ошибка может быть связана с именем VirtualBox виртуальной машины, созданной в VirtualBox. Если вы переопределили свойство, чтобы установить это имя и его одно и то же имя в ваших двух проектах, тогда произойдет столкновение, см. это , чтобы увидеть различные способы определения имени виртуальной машины
чтобы либо оставить бродягу определить имя виртуальной машины, либо убедиться, что у вас есть уникальное имя виртуальной машины в вашем другом проекте, и она будет работать просто отлично
UPDATE
Я проверяю это конкретное поле и содержит следующий файл Vagrantfile
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
как уникальный для каждого из ваших проектов.
Ответ 2
Я обнаружил, что проще изменить исходный блок Vagrantfile
(расположенный ~/.vagrant.d/boxes/ubuntu-VAGRANTSLASH-xenial64/<VERSTION>/virtualbox/Vagrantfile
), а не каждый раз обдумывать уникальные имена виртуальных машин.
Рабочая конфигурация Vagrantfile (box!):
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