{"record":{"id":"a5631857472ec488","repo":"hashicorp/vagrant","slug":"the-provisioner-name-doesn-t-support-provisio-a56318","errorCode":null,"errorMessage":"The provisioner '%{name}' doesn't support provisioning on\nWindows guests via WinRM. This is likely not a limitation\nof the provisioner itself but rather that Vagrant doesn't know\nhow to run this provisioner over WinRM.\n\nIf you'd like this provisioner to work over WinRM, please\ntake a look at the Vagrant source code linked below and try\nto contribute back support. Thank you!\n\nhttps://github.com/hashicorp/vagrant","messagePattern":"The provisioner '%(.+?)' doesn't support provisioning on\nWindows guests via WinRM\\. This is likely not a limitation\nof the provisioner itself but rather that Vagrant doesn't know\nhow to run this provisioner over WinRM\\.\n\nIf you'd like this provisioner to work over WinRM, please\ntake a look at the Vagrant source code linked below and try\nto contribute back support\\. Thank you!\n\nhttps://github\\.com/hashicorp/vagrant","errorType":"exception","errorClass":"Vagrant::Errors::ProvisionerWinRMUnsupported","httpStatus":null,"severity":"error","filePath":"plugins/provisioners/salt/provisioner.rb","lineNumber":67,"sourceCode":"      end\n\n      def binaries_found\n        if @machine.config.vm.communicator == :winrm\n          which_cmd = \"Get-Command\"\n        else\n          which_cmd = \"which\"\n        end\n\n        ## Determine States, ie: install vs configure\n        desired_binaries = []\n        if !@config.no_minion\n          desired_binaries.push('salt-minion')\n          desired_binaries.push('salt-call')\n        end\n\n        if @config.install_master\n          if @machine.config.vm.communicator == :winrm\n            raise Vagrant::Errors::ProvisionerWinRMUnsupported,\n              name: \"salt.install_master\"\n          else\n            desired_binaries.push('salt-master')\n          end\n        end\n\n        if @config.install_syndic\n          if @machine.config.vm.communicator == :winrm\n            raise Vagrant::Errors::ProvisionerWinRMUnsupported,\n              name: \"salt.install_syndic\"\n          else\n            desired_binaries.push('salt-syndic')\n          end\n        end\n\n        found = true\n        for binary in desired_binaries\n          @machine.env.ui.info \"Checking if %s is installed\" % binary","sourceCodeStart":49,"sourceCodeEnd":85,"githubUrl":"https://github.com/hashicorp/vagrant/blob/35f3160f4ad6edc3a9f3aa9570adfc1a4d73aaa5/plugins/provisioners/salt/provisioner.rb#L49-L85","documentation":"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\".","triggerScenarios":"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.","commonSituations":"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.","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"],"exampleFix":"# before\nconfig.vm.communicator = \"winrm\"\nconfig.vm.provision :salt do |s|\n  s.install_master = true   # -> ProvisionerWinRMUnsupported\nend\n\n# after\nconfig.vm.communicator = \"winrm\"\nconfig.vm.provision :salt do |s|\n  s.minion_config = \"salt/minion.conf\"  # minion-only: supported over WinRM\nend","handlingStrategy":"validation","validationCode":"# Vagrantfile: gate master installs on the communicator\nwinrm = config.vm.communicator.to_s == \"winrm\"\nconfig.vm.provision :salt do |s|\n  s.install_master = !winrm\n  s.minion_config = \"salt/minion.conf\"\nend","typeGuard":"def salt_master_supported?(machine)\n  machine.config.vm.communicator != :winrm\nend","tryCatchPattern":"begin\n  machine.provision\nrescue Vagrant::Errors::ProvisionerWinRMUnsupported => e\n  # e.extra_data[:name] == \"salt.install_master\"\n  abort \"Salt master cannot be installed over WinRM: #{e.message}\"\nend","preventionTips":["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"],"tags":["salt","winrm","windows","provisioner","install-master"],"backgroundTag":"provisioner-unsupported-on-platform","analyzedSha":"35f3160f4ad6edc3a9f3aa9570adfc1a4d73aaa5","analyzedAt":"2026-08-21T13:34:32.514Z","schemaVersion":2},"datasetVersion":"2026-08-21T18:17:14.833Z"}