Merge pull request #10242 from briancain/IGNORE-BOX-VAGRNANTFILE

Add config option `ignore_box_vagrantfile`
This commit is contained in:
Brian Cain 2018-10-01 11:07:28 -07:00 committed by GitHub
commit 184d114374
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 38 additions and 1 deletions

View File

@ -1,4 +1,5 @@
require "vagrant/util/template_renderer"
require "log4r"
module Vagrant
# This class provides a way to load and access the contents
@ -26,6 +27,7 @@ module Vagrant
@keys = keys
@loader = loader
@config, _ = loader.load(keys)
@logger = Log4r::Logger.new("vagrant::vagrantfile")
end
# Returns a {Machine} for the given name and provider that
@ -195,12 +197,14 @@ module Vagrant
box = boxes.find(config.vm.box, box_formats, config.vm.box_version)
if box
box_vagrantfile = find_vagrantfile(box.directory)
if box_vagrantfile
if box_vagrantfile && !config.vm.ignore_box_vagrantfile
box_config_key =
"#{boxes.object_id}_#{box.name}_#{box.provider}".to_sym
@loader.set(box_config_key, box_vagrantfile)
local_keys.unshift(box_config_key)
config, config_warnings, config_errors = @loader.load(local_keys)
elsif box_vagrantfile && config.vm.ignore_box_vagrantfile
@logger.warn("Ignoring #{box.name} provided Vagrantfile inside box")
end
end
end

View File

@ -22,6 +22,7 @@ module VagrantPlugins
attr_accessor :base_mac
attr_accessor :boot_timeout
attr_accessor :box
attr_accessor :ignore_box_vagrantfile
attr_accessor :box_check_update
attr_accessor :box_url
attr_accessor :box_server_url
@ -51,6 +52,7 @@ module VagrantPlugins
@base_mac = UNSET_VALUE
@boot_timeout = UNSET_VALUE
@box = UNSET_VALUE
@ignore_box_vagrantfile = UNSET_VALUE
@box_check_update = UNSET_VALUE
@box_download_ca_cert = UNSET_VALUE
@box_download_ca_path = UNSET_VALUE
@ -377,6 +379,7 @@ module VagrantPlugins
@base_mac = nil if @base_mac == UNSET_VALUE
@boot_timeout = 300 if @boot_timeout == UNSET_VALUE
@box = nil if @box == UNSET_VALUE
@ignore_box_vagrantfile = false if @ignore_box_vagrantfile == UNSET_VALUE
if @box_check_update == UNSET_VALUE
@box_check_update = !present?(ENV["VAGRANT_BOX_UPDATE_CHECK_DISABLE"])

View File

@ -208,6 +208,31 @@ describe Vagrant::Vagrantfile do
expect(box.name).to eq("base")
end
it "does not configure box configuration if set to ignore" do
register_provider("foo")
configure do |config|
config.vm.box = "base"
config.vm.ignore_box_vagrantfile = true
end
iso_env.box3("base", "1.0", :foo, vagrantfile: <<-VF)
Vagrant.configure("2") do |config|
config.ssh.port = 123
config.vm.hostname = "hello"
end
VF
results = subject.machine_config(:default, :foo, boxes)
box = results[:box]
config = results[:config]
expect(config.vm.box).to eq("base")
expect(config.ssh.port).to eq(nil)
expect(config.vm.hostname).to eq(nil)
expect(box).to_not be_nil
expect(box.name).to eq("base")
end
it "configures with the proper box version" do
register_provider("foo")

View File

@ -138,6 +138,11 @@ on the guest with the configured hostname.
<hr>
`config.vm.ignore_box_vagrantfile` - If true, Vagrant will not load the the
settings found inside a boxes Vagrantfile, if present. Defaults to `false`.
<hr>
`config.vm.network` - Configures [networks](/docs/networking/) on
the machine. Please see the networking page for more information.