Tôi đã đóng gói một VirtualBox với tất cả các cài đặt tôi muốn. Tôi đặt mạng thành 'bộ chuyển đổi cầu nối' (Vagrant gọi đó là 'public_network'). Tôi thậm chí còn nhìn box.ovf
vào .box
tập tin và nó nói
$ 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>
Nhưng khi tôi cố gắng thêm hộp với vagrant box add box-name box.box
và init
hộp, thì nó tạo ra máy mà không có bộ chuyển đổi cầu nối. Nó đã sử dụng NAT.
Tôi thậm chí đã cập nhật .box
tệp (là tệp tar được nén) và ghi đè lên Vagrantfile
với tùy chỉnh của tôi Vagrantfile
đã có
config.vm.network "public_network"
Tôi lại thêm hộp (với --force
), chạy vagrant init box-name
một lần nữa, và nó vẫn tạo ra một Vagrantfile
với config.vm.network
nhận xét ra!
Vậy, làm thế nào ?
Âm đạo 2.0.1
Đây là mạng VM được tạo thủ công của tôi trong VirtualBox:
Tôi đã tạo package-the-vagrantfile/Vagrantfile
có chứa
Vagrant.configure("2") do |config|
config.vm.network "public_network"
config.vm.provider "virtualbox" do |vb|
vb.memory = "64"
end
end
Theo tài liệu
https://www.vagrantup.com/docs/networking/public_network.html
Tôi gói VM này với
$ vagrant package --base node --vagrantfile package-the-vagrantfile/Vagrantfile
Nó tạo ra package.box
. Tôi khởi tạo hộp với
$ vagrant init package.box --minimal ; vagrant up
Nó bắt đầu một hộp mới ...
$ 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...
Nhưng nó có mạng sai
Nó có bộ nhớ chính xác
Chỉ thị mạng là trong hộp quá.
$ 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)