Packer Plugin SDK enables building Packer plugins (builders, provisioners, or post-processors) to manage any service providers or custom in-house solutions
MPL-2.0 License
This SDK enables building Packer plugins. This allows Packer's users to use both the officially-supported builders, provisioners, and post-processors, and custom in-house solutions.
Packer itself is a tool for building identical machine images for multiple platforms from a single source configuration. You can find more about Packer on its website and its GitHub repository.
Packer v1.7.0 or later is needed for this SDK. Versions of Packer prior to that release are still compatible with third-party plugins, but the plugins should use the plugin tooling from inside earlier versions of Packer to ensure complete API compatibility.
The Packer Plugin SDK is built in Go, and uses the support policy of Go as its support policy. The two latest major releases of Go are supported by the SDK.
Currently, that means Go 1.14 or later must be used when building a provider with the SDK.
See the Extending Packer docs for a guided tour of plugin development.
See the Extending Packer section on the Packer website.
The SDK embeds tests to ensure we don't introduce a regression in the future. Up to version 0.5.0 of the SDK, tests would be runnable with make test
on their own but since we removed the replace
statement for go-cty
tests won't work out-of-the-box. Users will need to invoke packer-sdc fix .
in order to fix the go.mod
and go.sum
files before running tests.
Please do not commit these changes, as adding this replace
section to the go.mod
file will make it impossible for dependents to run go install
for packer-sdc
afterwards.
Migrating to the standalone SDK v1 is covered on the Plugin SDK section of the website.
The Packer Plugin SDK is a Go module versioned using semantic versioning.