hashicorp/packer · error

The builder %s is unknown by Packer, and is likely part of a

Error message

The builder %s is unknown by Packer, and is likely part of a plugin that is not installed.
You may find the needed plugin along with installation instructions documented on the Packer integrations page.

https://developer.hashicorp.com/packer/integrations?filter=%s

What it means

The build's underlying component type (e.g. 'amazon-ebs') is not present among the installed builder plugins, so Packer cannot start it. The message links to the integrations page, filtering by the plugin name portion of the type (text before the first '-').

Source

Thrown at packer/core.go:459

			}
		}
	}
	return builds, diags
}

// Build returns the Build object for the given name.
func (c *Core) Build(n string) (*CoreBuild, error) {
	// Setup the builder
	configBuilder, ok := c.builds[n]
	if !ok {
		return nil, fmt.Errorf("no such build found: %s", n)
	}
	// BuilderStore = config.Builders, gathered in loadConfig() in main.go
	// For reference, the builtin BuilderStore is generated in
	// packer/config.go in the Discover() func.

	if !c.components.PluginConfig.Builders.Has(configBuilder.Type) {
		err := fmt.Errorf(
			"The builder %s is unknown by Packer, and is likely part of a plugin that is not installed.\n"+
				"You may find the needed plugin along with installation instructions documented on the Packer integrations page.\n\n"+
				"https://developer.hashicorp.com/packer/integrations?filter=%s",
			configBuilder.Type,
			strings.Split(configBuilder.Type, "-")[0],
		)

		if sugg := didyoumean.NameSuggestion(configBuilder.Type, c.components.PluginConfig.Builders.List()); sugg != "" {
			err = fmt.Errorf("Did you mean to use %q?", sugg)
		}

		return nil, err
	}

	// the Start command launches the builder plugin of the given type without
	// calling Prepare() or passing any build-specific details.
	builder, err := c.components.PluginConfig.Builders.Start(configBuilder.Type)
	if err != nil {

View on GitHub (pinned to eb36e3c3e4)

Solutions

  1. Run `packer init <template>` in the template directory to install required plugins per required_plugins.
  2. Install the specific plugin: `packer plugins install <source>`.
  3. Check `packer plugins installed` and PACKER_PLUGIN_PATH for correct discovery.
  4. Pin a required_plugins version compatible with your Packer core version.

Example fix

// before
$ packer build .   # builder 'amazon-ebs' unknown
// after: add to template and run packer init
packer {
  required_plugins {
    amazon = { source = "github.com/hashicorp/amazon", version = ">= 1.0.0" }
  }
}
Defensive patterns

Strategy: validation

Validate before calling

// Ensure required plugins are installed before building:
exec.Command("packer", "init", templatePath).Run()   // installs required_plugins
// or check programmatically:
if !core.Components.PluginConfig.Builders.Has(builderType) {
    return fmt.Errorf("builder %s missing; run packer plugins install", builderType)
}

Prevention

When it happens

Trigger: Core.Build: c.components.PluginConfig.Builders.Has(configBuilder.Type) is false — the template references a builder provided by a plugin that is not installed (or installed under a different version/path). Raised for any `packer build` on such a template.

Common situations: Fresh machine/CI container without `packer init` run; plugin removed or renamed between plugin versions; using a third-party builder without installing its binary; PACKER_PLUGIN_PATH pointing at the wrong directory.

Related errors


AI-assisted analysis of hashicorp/packer@eb36e3c3e4 (2026-09-05). Data as JSON: /api/errors/207c1c61ab80516c. Report an issue: GitHub.