diff --git a/lib/vagrant/action/builtin.rb b/lib/vagrant/action/builtin.rb index 91a43e4e9..6cfd620b7 100644 --- a/lib/vagrant/action/builtin.rb +++ b/lib/vagrant/action/builtin.rb @@ -14,7 +14,6 @@ module Vagrant # environment. register(:start, Builder.new do use VM::CleanMachineFolder - use VM::Customize use VM::ClearForwardedPorts use VM::ForwardPorts use VM::Provision @@ -23,6 +22,7 @@ module Vagrant use VM::ShareFolders use VM::HostName use VM::Network + use VM::Customize use VM::Boot end) diff --git a/lib/vagrant/action/vm/forward_ports.rb b/lib/vagrant/action/vm/forward_ports.rb index fed25083e..9f297028d 100644 --- a/lib/vagrant/action/vm/forward_ports.rb +++ b/lib/vagrant/action/vm/forward_ports.rb @@ -103,16 +103,15 @@ module Vagrant # Assuming the only reason to establish port forwarding is because the VM is using Virtualbox NAT networking. # Host-only or Bridged networking don't require port-forwarding and establishing forwarded ports on these # attachment types has uncertain behaviour. - if @env["vm"].vm.network_adapters[adapter].attachment_type == :nat - @env.ui.info(I18n.t("vagrant.actions.vm.forward_ports.forwarding_entry", message_attributes)) - forward_port(name, options) - else - @env.ui.info(I18n.t("vagrant.actions.vm.forward_ports.non_nat", message_attributes)) + @env["config"].vm.customize do |vm| + if @env["vm"].vm.network_adapters[adapter].attachment_type == :nat + @env.ui.info(I18n.t("vagrant.actions.vm.forward_ports.forwarding_entry", message_attributes)) + forward_port(vm, name, options) + else + @env.ui.info(I18n.t("vagrant.actions.vm.forward_ports.non_nat", message_attributes)) + end end end - - @env["vm"].vm.save - @env["vm"].reload! end #-------------------------------------------------------------- @@ -120,13 +119,13 @@ module Vagrant #-------------------------------------------------------------- # Forwards a port. - def forward_port(name, options) + def forward_port(vm, name, options) port = VirtualBox::NATForwardedPort.new port.name = name port.guestport = options[:guestport] port.hostport = options[:hostport] port.protocol = options[:protocol] || :tcp - @env["vm"].vm.network_adapters[options[:adapter]].nat_driver.forwarded_ports << port + vm.network_adapters[options[:adapter]].nat_driver.forwarded_ports << port end end end