2

Я упаковал 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)

0