{"record":{"id":"11c2977c8c3bd76c","repo":"hashicorp/packer","slug":"the-provisioner-s-is-unknown-by-packer-and-is-li","errorCode":null,"errorMessage":"The provisioner %s is unknown by Packer, and is likely part of a plugin that is not installed.\nYou may find the needed plugin along with installation instructions documented on the Packer integrations page.\n\nhttps://developer.hashicorp.com/packer/integrations?filter=%s","messagePattern":"The provisioner (.+?) is unknown by Packer, and is likely part of a plugin that is not installed\\.\nYou may find the needed plugin along with installation instructions documented on the Packer integrations page\\.\n\nhttps://developer\\.hashicorp\\.com/packer/integrations\\?filter=(.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packer/core.go","lineNumber":239,"sourceCode":"\t\t\tcontinue\n\t\t}\n\n\t\tif pos := sort.SearchStrings(except, n); pos < len(except) && except[pos] == n {\n\t\t\tcontinue\n\t\t}\n\t\tr = append(r, n)\n\t}\n\tsort.Strings(r)\n\n\treturn r\n}\n\nfunc (c *Core) generateCoreBuildProvisioner(rawP *template.Provisioner, rawName string) (CoreBuildProvisioner, error) {\n\t// Get the provisioner\n\tcbp := CoreBuildProvisioner{}\n\n\tif !c.components.PluginConfig.Provisioners.Has(rawP.Type) {\n\t\terr := fmt.Errorf(\n\t\t\t\"The provisioner %s is unknown by Packer, and is likely part of a plugin that is not installed.\\n\"+\n\t\t\t\t\"You may find the needed plugin along with installation instructions documented on the Packer integrations page.\\n\\n\"+\n\t\t\t\t\"https://developer.hashicorp.com/packer/integrations?filter=%s\",\n\t\t\trawP.Type,\n\t\t\tstrings.Split(rawP.Type, \"-\")[0],\n\t\t)\n\n\t\tif sugg := didyoumean.NameSuggestion(rawP.Type, c.components.PluginConfig.Provisioners.List()); sugg != \"\" {\n\t\t\terr = fmt.Errorf(\"Did you mean to use %q?\", sugg)\n\t\t}\n\n\t\treturn cbp, err\n\t}\n\n\tprovisioner, err := c.components.PluginConfig.Provisioners.Start(rawP.Type)\n\tif err != nil {\n\t\treturn cbp, fmt.Errorf(\n\t\t\t\"error initializing provisioner '%s': %s\",","sourceCodeStart":221,"sourceCodeEnd":257,"githubUrl":"https://github.com/hashicorp/packer/blob/eb36e3c3e48a036f3e8cc94087636ee72e1303c9/packer/core.go#L221-L257","documentation":"When generating a build's provisioners, Core checks whether the provisioner type exists in the configured plugin set (c.components.PluginConfig.Provisioners.Has). If not, it returns a detailed error saying the provisioner is unknown by Packer and is likely part of a plugin that is not installed, with a link to the integrations page filtered by the provisioner's name (first dash-separated token).","triggerScenarios":"A template declares provisioners with a type whose plugin binary is not installed/discovered — e.g. `provisioner \"ansible\" {}` without the ansible plugin installed, a misspelled type, or `packer init` not run after adding the plugin to required_plugins.","commonSituations":"New machine or CI runner without installed plugins; forgot `packer init` to fetch required_plugins; plugin installed under a name that doesn't match the template's type; typo like \"sheel\" instead of \"shell\"; using a built-in-only type from old templates where the provisioner moved to a separate plugin.","solutions":["Run `packer init .` in the template directory to install all required_plugins","Install the missing plugin explicitly: packer plugins install <organization>/<name>","Check the provisioner type spelling in the template against installed plugins (`packer plugins installed`)","If the provisioner is a legacy built-in that moved to a plugin, update the template to the new plugin source"],"exampleFix":"// before (HCL2)\n# required_plugins block missing\nprovisioner \"ansible\" { playbook_file = \"./site.yml\" }\n// after (HCL2)\npacker {\n  required_plugins {\n    ansible = { version = \"= 1.1.0\", source = \"github.com/hashicorp/ansible\" }\n  }\n}\nprovisioner \"ansible\" { playbook_file = \"./site.yml\" }\n# then run: packer init .","handlingStrategy":"validation","validationCode":"// Before building, ensure plugins are resolved:\n//   packer init .\n//   packer plugins installed\n// Or programmatically check the plugin set:\nif !core.Components.PluginConfig.Provisioners.Has(provisionerType) {\n    return fmt.Errorf(\"provisioner %q not installed; run packer init\", provisionerType)\n}","typeGuard":null,"tryCatchPattern":"if err := core.Build(name); err != nil {\n    if strings.Contains(err.Error(), \"is unknown by Packer\") {\n        return fmt.Errorf(\"missing plugin for %q — run `packer init .`: %w\", name, err)\n    }\n    return err\n}","preventionTips":["Commit a required_plugins block and always run `packer init` (CI and fresh machines)","Spell-check provisioner types; run `packer inspect` to see recognized components","Keep plugins installed via `packer plugins install` with consistent naming","Pin plugin versions in required_plugins to avoid drift between environments"],"tags":["provisioner","plugins","installation","template"],"backgroundTag":"plugin-not-installed","analyzedSha":"eb36e3c3e48a036f3e8cc94087636ee72e1303c9","analyzedAt":"2026-09-05T13:20:43.127Z","contentChangedAt":"2026-09-05T13:20:43.127Z","schemaVersion":2},"datasetVersion":"2026-09-12T17:17:11.597Z"}