{"record":{"id":"54c3fd2ceba205d3","repo":"hashicorp/vagrant","slug":"the-provisioner-name-doesn-t-support-provisio","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/cfengine/provisioner.rb","lineNumber":11,"sourceCode":"# Copyright IBM Corp. 2010, 2025\n# SPDX-License-Identifier: BUSL-1.1\n\nrequire \"log4r\"\n\nmodule VagrantPlugins\n  module CFEngine\n    class Provisioner < Vagrant.plugin(\"2\", :provisioner)\n      def provision\n        if @machine.config.vm.communicator == :winrm\n          raise Vagrant::Errors::ProvisionerWinRMUnsupported,\n            name: \"cfengine\"\n        end\n\n        @logger = Log4r::Logger.new(\"vagrant::plugins::cfengine\")\n\n        @logger.info(\"Checking for CFEngine installation...\")\n        handle_cfengine_installation\n\n        if @config.files_path\n          @machine.ui.info(I18n.t(\"vagrant.cfengine_installing_files_path\"))\n          install_files(Pathname.new(@config.files_path).expand_path(@machine.env.root_path))\n        end\n\n        handle_cfengine_bootstrap if @config.mode == :bootstrap\n\n        if @config.mode == :single_run\n          # Just let people know\n          @machine.ui.info(I18n.t(\"vagrant.cfengine_single_run\"))","sourceCodeStart":1,"sourceCodeEnd":29,"githubUrl":"https://github.com/hashicorp/vagrant/blob/35f3160f4ad6edc3a9f3aa9570adfc1a4d73aaa5/plugins/provisioners/cfengine/provisioner.rb#L1-L29","documentation":"The CFEngine provisioner begins by refusing to run when the machine's communicator is :winrm: it raises ProvisionerWinRMUnsupported with name \"cfengine\". Vagrant's provisioners drive guests over the configured communicator, and CFEngine support was only implemented for ssh; the message explicitly invites contributing WinRM support rather than claiming a CFEngine limitation.","triggerScenarios":"A Vagrantfile (or multi-machine expansion) that sets `config.vm.communicator = :winrm` (or a box defaulting to it, e.g. Windows boxes) and then configures `config.vm.provision \"cfengine\"` — provision() raises on the first provision attempt.","commonSituations":"Applying an existing Linux-oriented cfengine block to a newly added Windows (WinRM) machine in a mixed multi-machine environment; base templates that globally set communicator :winrm; copying provisioner config between projects without checking communicator requirements.","solutions":["Drop the cfengine provisioner from the WinRM machine (scope it: `config.vm.provision \"cfengine\", only: ...` or move it under the Linux machine's block)","Or switch that machine's communicator back to :ssh (`config.vm.communicator = :ssh`) if the guest supports sshd","If cfengine must manage a Windows guest, run it via a shell provisioner over WinRM (e.g. cf-agent installed and invoked manually)","Or contribute WinRM support upstream per the linked repository"],"exampleFix":"# Vagrantfile — before\nconfig.vm.communicator = :winrm\nconfig.vm.provision \"cfengine\"\n# after — only provision via ssh guests\nconfig.vm.communicator = :winrm\nconfig.vm.provision \"shell\", inline: \"cf-agent -K -f /path/policy.cf\"  # run cfengine without the native provisioner","handlingStrategy":"validation","validationCode":"raise 'cfengine requires ssh communicator' if machine.config.vm.communicator == :winrm && provisioner_name == 'cfengine'","typeGuard":"def ssh_communicator?(machine)\n  machine.config.vm.communicator != :winrm\nend","tryCatchPattern":null,"preventionTips":["Scope provisioners per machine in multi-machine Vagrantfiles instead of defining them globally","Check a provisioner's supported communicators before attaching it to Windows/WinRM boxes","For Windows guests needing config management, use shell or chef/powershell-style provisioners over WinRM"],"tags":["cfengine","provisioner","winrm","windows","communicator"],"backgroundTag":"winrm-unsupported-provisioner","analyzedSha":"35f3160f4ad6edc3a9f3aa9570adfc1a4d73aaa5","analyzedAt":"2026-08-21T13:34:32.514Z","schemaVersion":2},"datasetVersion":"2026-08-21T18:17:14.833Z"}