hashicorp/vagrant · error · Vagrant::Errors::ProvisionerWinRMUnsupported
The provisioner '%{name}' doesn't support provisioning on Wi
Error message
The provisioner '%{name}' doesn't support provisioning on
Windows guests via WinRM. This is likely not a limitation
of the provisioner itself but rather that Vagrant doesn't know
how to run this provisioner over WinRM.
If you'd like this provisioner to work over WinRM, please
take a look at the Vagrant source code linked below and try
to contribute back support. Thank you!
https://github.com/hashicorp/vagrant What it means
The Salt provisioner raises Vagrant::Errors::ProvisionerWinRMUnsupported when the Vagrantfile enables install_master on a machine whose communicator is :winrm. The check fires in provision before any binaries are staged: running a Salt master over WinRM is unimplemented, so Vagrant aborts rather than run a bootstrap that can never work. The %{name} interpolated into the message is "salt.install_master".
Source
Thrown at plugins/provisioners/salt/provisioner.rb:67
end
def binaries_found
if @machine.config.vm.communicator == :winrm
which_cmd = "Get-Command"
else
which_cmd = "which"
end
## Determine States, ie: install vs configure
desired_binaries = []
if !@config.no_minion
desired_binaries.push('salt-minion')
desired_binaries.push('salt-call')
end
if @config.install_master
if @machine.config.vm.communicator == :winrm
raise Vagrant::Errors::ProvisionerWinRMUnsupported,
name: "salt.install_master"
else
desired_binaries.push('salt-master')
end
end
if @config.install_syndic
if @machine.config.vm.communicator == :winrm
raise Vagrant::Errors::ProvisionerWinRMUnsupported,
name: "salt.install_syndic"
else
desired_binaries.push('salt-syndic')
end
end
found = true
for binary in desired_binaries
@machine.env.ui.info "Checking if %s is installed" % binaryView on GitHub (pinned to 35f3160f4a)
Solutions
- Remove install_master from the salt provisioner block for WinRM machines (Windows minions are supported; masters are not)
- Run the Salt master on a separate Linux VM and point the Windows minion at it via the master option in the minion config
- Install the Salt master manually with a shell/powershell provisioner instead of the salt provisioner
- Only if the guest truly runs an SSH server, set config.vm.communicator = "ssh" so the :winrm check no longer fires
Example fix
# before config.vm.communicator = "winrm" config.vm.provision :salt do |s| s.install_master = true # -> ProvisionerWinRMUnsupported end # after config.vm.communicator = "winrm" config.vm.provision :salt do |s| s.minion_config = "salt/minion.conf" # minion-only: supported over WinRM end
Defensive patterns
Strategy: validation
Validate before calling
# Vagrantfile: gate master installs on the communicator winrm = config.vm.communicator.to_s == "winrm" config.vm.provision :salt do |s| s.install_master = !winrm s.minion_config = "salt/minion.conf" end
Type guard
def salt_master_supported?(machine) machine.config.vm.communicator != :winrm end
Try / catch
begin
machine.provision
rescue Vagrant::Errors::ProvisionerWinRMUnsupported => e
# e.extra_data[:name] == "salt.install_master"
abort "Salt master cannot be installed over WinRM: #{e.message}"
end Prevention
- Keep Windows/WinRM guests minion-only in Salt topologies
- Enable install_master only for Linux VMs reached over SSH
- Comment why a box uses WinRM so teammates don't paste master configs into it
When it happens
Trigger: A Vagrantfile that sets config.vm.communicator = :winrm (or a Windows box defaulting to WinRM) combined with a salt provisioner block using install_master = true. The raise at provisioner.rb:67 fires when @machine.config.vm.communicator == :winrm, before 'salt-master' is pushed onto desired_binaries.
Common situations: Copying a Linux master+minion Salt Vagrantfile onto a Windows/WinRM guest; CI matrices that enable install_master across all platforms; switching a box from SSH to WinRM without pruning Salt master options.
Related errors
- The provisioner '%{name}' doesn't support provisioning on Wi
- The provisioner '%{name}' doesn't support provisioning on Wi
- vagrant.provisioners.salt.bootstrap_failed
- Vagrant is unable to determine the location of this instance
- Vagrant cannot currently enable access to manage machines wi
AI-assisted analysis of hashicorp/vagrant@35f3160f4a (2026-08-21).
Data as JSON: /api/errors/a5631857472ec488.
Report an issue: GitHub.