Я упаковал VirtualBox со всеми необходимыми настройками. Я установил для сети «мостовой адаптер» (Vagrant называет его «public_network»). Я даже посмотрел на box.ovf
в файле .box
и он сказал
$ tar xOf nycmesh-qmp-openwrt.box box.ovf | less
<NetworkSection>
<Info>Logical networks used in the package</Info>
<Network ovf:name="Bridged">
<Description>Logical network used by this appliance.</Description>
Но когда я попытался добавить коробку с помощью vagrant box add box-name box.box
и init
коробку, он сгенерировал машину без мостового адаптера. Он использовал NAT.
Я даже обновил файл .box
(который является файлом gzip-tar) и переписал Vagrantfile
с помощью моего собственного Vagrantfile
который имел
config.vm.network "public_network"
Я заново добавил поле (с --force
), снова запустил vagrant init box-name
, и он все еще сгенерировал Vagrantfile
с config.vm.network
!
Итак, как?
Бродяга 2.0.1
Это моя виртуальная сеть, созданная вручную в VirtualBox:
Я создал package-the-vagrantfile/Vagrantfile
содержащий
Vagrant.configure("2") do |config|
config.vm.network "public_network"
config.vm.provider "virtualbox" do |vb|
vb.memory = "64"
end
end
Согласно документации
https://www.vagrantup.com/docs/networking/public_network.html
Я упаковываю эту ВМ с
$ vagrant package --base node --vagrantfile package-the-vagrantfile/Vagrantfile
Создает package.box
. Я создаю ящик с
$ vagrant init package.box --minimal ; vagrant up
Запускается новая коробка ...
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'package.box'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: node_default_1522176655197_96615
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
Но у него неправильная сеть
У него есть правильная память
Сетевая директива тоже в коробке.
$ tar -xOf package.box ./include/_Vagrantfile
Vagrant.configure("2") do |config|
config.vm.network "public_network"
...
$ tar -xOf package.box ./Vagrantfile
Vagrant::Config.run do |config|
...
# Load include vagrant file if it exists after the auto-generated
# so it can override any of the settings
include_vagrantfile = File.expand_path("../include/_Vagrantfile", __FILE__)
load include_vagrantfile if File.exist?(include_vagrantfile)