diff --git a/plugins/provisioners/salt/config.rb b/plugins/provisioners/salt/config.rb index 4d97d942cad..f31b65786fd 100644 --- a/plugins/provisioners/salt/config.rb +++ b/plugins/provisioners/salt/config.rb @@ -19,6 +19,7 @@ class Config < Vagrant.plugin("2", :config) attr_accessor :bootstrap_script attr_accessor :verbose attr_accessor :seed_master + attr_accessor :config_dir attr_reader :pillar_data attr_accessor :colorize attr_accessor :log_level @@ -56,6 +57,7 @@ def initialize @install_syndic = UNSET_VALUE @no_minion = UNSET_VALUE @bootstrap_options = UNSET_VALUE + @config_dir = UNSET_VALUE end def finalize! @@ -82,6 +84,7 @@ def finalize! @install_syndic = nil if @install_syndic == UNSET_VALUE @no_minion = nil if @no_minion == UNSET_VALUE @bootstrap_options = nil if @bootstrap_options == UNSET_VALUE + @config_dir = nil if @config_dir == UNSET_VALUE end @@ -90,6 +93,21 @@ def pillar(data) @pillar_data = Vagrant::Util::DeepMerge.deep_merge(@pillar_data, data) end + def default_config_dir(machine) + guest_type = machine.config.vm.guest + if guest_type == nil + guest_type = :linux + end + + # FIXME: there should be a way to do that a bit smarter + if guest_type == :windows + return "C:\\salt" + else + return "/etc/salt" + end + + end + def validate(machine) errors = _detected_errors if @minion_config @@ -129,6 +147,10 @@ def validate(machine) errors << I18n.t("vagrant.provisioners.salt.must_accept_keys") end + if @config_dir == nil + @config_dir = default_config_dir(machine) + end + return {"salt provisioner" => errors} end diff --git a/plugins/provisioners/salt/provisioner.rb b/plugins/provisioners/salt/provisioner.rb index 87af7cc7dac..8b6c3657893 100644 --- a/plugins/provisioners/salt/provisioner.rb +++ b/plugins/provisioners/salt/provisioner.rb @@ -305,6 +305,11 @@ def call_overstate end def call_highstate + if @config.minion_config + @machine.env.ui.info "Copying salt minion config to #{@config.config dir}" + @machine.communicate.upload(expanded_path(@config.minion_config).to_s, @config.config_dir + "/minion") + end + if @config.run_highstate @machine.env.ui.info "Calling state.highstate... (this may take a while)" if @config.install_master