{"record":{"id":"246faa25536ea072","repo":"hashicorp/vagrant","slug":"the-provisioner-name-doesn-t-support-provisio-246faa","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/puppet/provisioner/puppet_server.rb","lineNumber":14,"sourceCode":"# Copyright IBM Corp. 2010, 2025\n# SPDX-License-Identifier: BUSL-1.1\n\nmodule VagrantPlugins\n  module Puppet\n    module Provisioner\n      class PuppetServerError < Vagrant::Errors::VagrantError\n        error_namespace(\"vagrant.provisioners.puppet_server\")\n      end\n\n      class PuppetServer < Vagrant.plugin(\"2\", :provisioner)\n        def provision\n          if @machine.config.vm.communicator == :winrm\n            raise Vagrant::Errors::ProvisionerWinRMUnsupported,\n              name: \"puppet_server\"\n          end\n\n          verify_binary(\"puppet\")\n          run_puppet_agent\n        end\n\n        def verify_binary(binary)\n          if @config.binary_path\n            test_cmd = \"test -x #{@config.binary_path}/#{binary}\"\n          else\n            test_cmd = \"which #{binary}\"\n          end\n\n          @machine.communicate.sudo(\n            test_cmd,\n            error_class: PuppetServerError,\n            error_key: :not_detected,","sourceCodeStart":1,"sourceCodeEnd":32,"githubUrl":"https://github.com/hashicorp/vagrant/blob/35f3160f4ad6edc3a9f3aa9570adfc1a4d73aaa5/plugins/provisioners/puppet/provisioner/puppet_server.rb#L1-L32","documentation":"Raised by the PuppetServer provisioner when `@machine.config.vm.communicator` is :winrm: it immediately aborts before doing anything. The class's helpers are POSIX-only (verify_binary uses `which`/`test -x`), so over WinRM the commands would be nonsense; Vagrant raises ProvisionerWinRMUnsupported (with name 'puppet_server') and points to the repo, explicitly framing WinRM support as a missing contribution rather than a Puppet limitation.","triggerScenarios":"A Vagrantfile with `config.vm.communicator = \"winrm\"` (required for Windows guests without SSH) plus `config.vm.provision \"puppet_server\"`. The check fires on every provision call.","commonSituations":"Windows Server boxes managed via WinRM where the team assumed all provisioners work; templates combining winrm communicator with a Puppet master setup; switching a Linux-oriented Puppet setup to a Windows box.","solutions":["Use the regular `puppet` provisioner (puppet apply) if your flow allows, or run the agent via a shell provisioner: `config.vm.provision \"shell\", inline: \"puppet agent --test --server=puppet.example.com\"`","Use the winssh communicator on Windows guests if you can enable SSH there, then puppet_server's POSIX commands work","Contribute WinRM support upstream as the error message suggests"],"exampleFix":"# Vagrantfile - before\nconfig.vm.communicator = \"winrm\"\nconfig.vm.provision \"puppet_server\" do |puppet|\n  puppet.puppet_server = \"puppet.example.com\"\nend\n\n# Vagrantfile - after\nconfig.vm.communicator = \"winrm\"\nconfig.vm.provision \"shell\", inline: \"puppet agent --test --server puppet.example.com\"","handlingStrategy":"validation","validationCode":"# Choose the provisioner based on communicator before configuring\nif config.vm.communicator == :winrm\n  config.vm.provision \"shell\", inline: \"puppet agent --test --server puppet.example.com\"\nelse\n  config.vm.provision \"puppet_server\"\nend","typeGuard":"def puppet_server_supported?(machine)\n  machine.config.vm.communicator != :winrm\nend","tryCatchPattern":null,"preventionTips":["Check `config.vm.communicator` before assigning provisioners in shared Vagrantfile templates","For Windows guests, default to the puppet (apply) provisioner or a shell-based `puppet agent` invocation","Track upstream Vagrant for WinRM support if puppet_server is a hard requirement"],"tags":["puppet","provisioning","vagrant","winrm","windows","unsupported"],"backgroundTag":"unsupported-communicator","analyzedSha":"35f3160f4ad6edc3a9f3aa9570adfc1a4d73aaa5","analyzedAt":"2026-08-21T13:34:32.514Z","schemaVersion":2},"datasetVersion":"2026-08-21T18:17:14.833Z"}