diff --git a/plugins/provisioners/salt/bootstrap-salt.ps1 b/plugins/provisioners/salt/bootstrap-salt.ps1 index 0a05d6517..d0655ad42 100644 --- a/plugins/provisioners/salt/bootstrap-salt.ps1 +++ b/plugins/provisioners/salt/bootstrap-salt.ps1 @@ -1,5 +1,6 @@ Param( [string]$version, + [string]$pythonVersion = "2", [string]$runservice, [string]$minion, [string]$master @@ -14,6 +15,11 @@ If ($version -notmatch "2\d{3}\.\d{1,2}\.\d+(\-\d{1})?"){ $version = '2016.11.3' } +If ($pythonVersion -notmatch "\d+") { + $pythonVersion = "2" + Write-Host "Defaulting to minion Python version $pythonVersion" +} + If ($runservice.ToLower() -eq "true"){ Write-Host "Service is set to run." [bool]$runservice = $True @@ -49,11 +55,20 @@ If ([IntPtr]::Size -eq 4) { } # Download minion setup file -Write-Host "Downloading Salt minion installer Salt-Minion-$version-$arch-Setup.exe" -$webclient = New-Object System.Net.WebClient -$url = "https://repo.saltstack.com/windows/Salt-Minion-$version-$arch-Setup.exe" -$file = "C:\tmp\salt.exe" -$webclient.DownloadFile($url, $file) +$possibleFilenames = @("Salt-Minion-$version-$arch-Setup.exe", "Salt-Minion-$version-Py$pythonVersion-$arch-Setup.exe") +foreach ($minionFilename in $possibleFilenames) { + try { + Write-Host "Downloading Salt minion installer $minionFilename" + $webclient = New-Object System.Net.WebClient + $url = "https://repo.saltstack.com/windows/$minionFilename" + $file = "C:\tmp\salt.exe" + $webclient.DownloadFile($url, $file) + break + } + catch { + Write-Host "Unable to download $minionFilename" + } +} # Install minion silently diff --git a/plugins/provisioners/salt/config.rb b/plugins/provisioners/salt/config.rb index b42cfb00d..4e15a7f3f 100644 --- a/plugins/provisioners/salt/config.rb +++ b/plugins/provisioners/salt/config.rb @@ -34,6 +34,7 @@ module VagrantPlugins attr_accessor :no_minion attr_accessor :bootstrap_options attr_accessor :version + attr_accessor :python_version attr_accessor :run_service attr_accessor :master_id @@ -64,6 +65,7 @@ module VagrantPlugins @masterless = UNSET_VALUE @minion_id = UNSET_VALUE @version = UNSET_VALUE + @python_version = UNSET_VALUE @run_service = UNSET_VALUE @master_id = UNSET_VALUE end @@ -89,6 +91,7 @@ module VagrantPlugins @masterless = false if @masterless == UNSET_VALUE @minion_id = nil if @minion_id == UNSET_VALUE @version = nil if @version == UNSET_VALUE + @python_version = nil if @python_version == UNSET_VALUE @run_service = nil if @run_service == UNSET_VALUE @master_id = nil if @master_id == UNSET_VALUE diff --git a/plugins/provisioners/salt/provisioner.rb b/plugins/provisioners/salt/provisioner.rb index deefa1428..57db562ad 100644 --- a/plugins/provisioners/salt/provisioner.rb +++ b/plugins/provisioners/salt/provisioner.rb @@ -121,7 +121,7 @@ module VagrantPlugins options = "%s -F -c %s" % [options, config_dir] end - if @config.seed_master && @config.install_master + if @config.seed_master && @config.install_master && @machine.config.vm.communicator != :winrm seed_dir = "/tmp/minion-seed-keys" @machine.communicate.sudo("mkdir -p -m777 #{seed_dir}") @config.seed_master.each do |name, keyfile| @@ -132,27 +132,27 @@ module VagrantPlugins options = "#{options} -k #{seed_dir}" end - if configure && !install + if configure && !install && @machine.config.vm.communicator != :winrm options = "%s -C" % options end - if @config.install_master + if @config.install_master && @machine.config.vm.communicator != :winrm options = "%s -M" % options end - if @config.install_syndic + if @config.install_syndic && @machine.config.vm.communicator != :winrm options = "%s -S" % options end - if @config.no_minion + if @config.no_minion && @machine.config.vm.communicator != :winrm options = "%s -N" % options end - if @config.install_type + if @config.install_type && @machine.config.vm.communicator != :winrm options = "%s %s" % [options, @config.install_type] end - if @config.install_args + if @config.install_args && @machine.config.vm.communicator != :winrm options = "%s %s" % [options, @config.install_args] end @@ -267,6 +267,9 @@ module VagrantPlugins if @config.version options += " -version %s" % @config.version end + if @config.python_version + options += " -pythonVersion %s" % @config.python_version + end if @config.run_service @machine.env.ui.info "Salt minion will be stopped after installing." options += " -runservice %s" % @config.run_service