Если вы используете Vagrant, вы можете использовать следующий Vagrantfile
, который предоставит 3 ящика (Ubuntu 16.04 ).
$ cat Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
##############
### References
# - https://www.vagrantup.com/docs/vagrantfile/machine_settings.html
# - https://www.vagrantup.com/docs/vagrantfile/tips.html
# - https://www.vagrantup.com/docs/networking/forwarded_ports.html
##############
#unless Vagrant.has_plugin?("HostManager")
# raise 'HostManager plugin not installed!'
#end
image = "ubuntu/xenial64"
Vagrant.configure("2") do |config|
vboxName1 = "box-101"
hostname1 = "box1"
config.vm.define "#{vboxName1}" do |box|
box.vm.box = "#{image}"
#box.vm.network :private_network, ip: "192.168.56.101"
box.vm.network :public_network, use_dhcp_assigned_default_route: true
box.vm.provider :virtualbox do |v|
v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
v.customize ["modifyvm", :id, "--memory", 512]
v.customize ["modifyvm", :id, "--name", "#{hostname1}"]
end
end
vboxName2 = "box-102"
hostname2 = "box2"
config.vm.define "#{vboxName2}" do |box|
box.vm.box = "#{image}"
#box.vm.network :private_network, ip: "192.168.56.103"
box.vm.network :public_network, use_dhcp_assigned_default_route: true
box.vm.provider :virtualbox do |v|
v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
v.customize ["modifyvm", :id, "--memory", 512]
v.customize ["modifyvm", :id, "--name", "#{hostname2}"]
end
end
vboxName3 = "box-103"
hostname3 = "box3"
config.vm.define "#{vboxName3}" do |box|
box.vm.box = "#{image}"
#box.vm.network :private_network, ip: "192.168.56.103"
box.vm.network :public_network, use_dhcp_assigned_default_route: true
box.vm.provider :virtualbox do |v|
v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
v.customize ["modifyvm", :id, "--memory", 512]
v.customize ["modifyvm", :id, "--name", "#{hostname3}"]
end
end
end
Чтобы использовать:
# launches all VMs
$ vagrant up
# ssh into box-101
$ vagrant ssh box-101
Для получения дополнительной информации об использовании vagrant
обратитесь к использованию:
$ vagrant
Ваши сообщения об ошибках вызваны тем, что виртуальные машины используют один и тот же носитель.
Это может быть связано с тем, что вы использовали один и тот же образ виртуального жесткого диска для виртуальных машин, и это не сработает. Каждой виртуальной машине нужен собственный виртуальный жесткий диск.
Другая возможность заключается в том, что установочный носитель (ISO-файл )для Ubuntu связан со всеми тремя виртуальными машинами во время их работы. Этот ISO необходим только для базовой установки, поэтому после того, как вы закончите установку первой виртуальной машины, вы можете отключить ISO и использовать его для второй виртуальной машины.
Что касается сетевой части, то :виртуальные машины, настроенные как NAT, помещаются в виртуальную сеть с использованием диапазона IP-адресов 10.0.0.x -. Virtualbox настроит dhcp для этой подсети и позаботится о том, чтобы DNS и тому подобное перенаправлялись на обычный DNS. Это делается на основе сетевой конфигурации хост-системы, поэтому требуется правильная настройка.
В качестве альтернативы вы также можете настроить сеть только для хоста -между виртуальными машинами. В этом случае виртуальная машина работает в изолированной сети, которая видна только для виртуальной машины и хоста.
В любом случае обратитесь к отличному руководству Virtualbox. Он имеет обширный раздел по работе в сети, включая только команды командной строки (), которые предоставляют гораздо больше возможностей, чем конфигурация с графическим интерфейсом.