add readme to plugin-sdk subdir

This commit is contained in:
Megan Marsh 2020-12-11 14:02:41 -08:00
parent a6b6819b1d
commit 575f8ab8e8
1 changed files with 58 additions and 0 deletions

View File

@ -0,0 +1,58 @@
# Packer Plugin SDK
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](https://www.packer.io) and [its GitHub repository](https://github.com/hashicorp/packer).
## Packer CLI Compatibility
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.
## Go Compatibility
The Packer Plugin SDK is built in Go, and uses the [support policy](https://golang.org/doc/devel/release.html#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.
## Getting Started
See the [Extending Packer](https://www.packer.io/docs/extending) docs for a guided tour of plugin development.
## Documentation
See the [Extending Packer](https://www.packer.io/docs/extending) section on the Packer website.
## Packer Scope (Plugins VS Core)
### Packer Core
- acts as an RPC _client_
- interacts with the user
- parses (HCL/JSON) configuration
- manages build as whole, asks **plugin(s)** to manage the image lifecycle and modify the image being built.
- discovers **plugin(s)** and their versions per configuration
- manages **plugin** lifecycles (i.e. spins up & tears down plugin process)
- passes relevant parts of parsed (valid JSON/HCL) and interpolated configuration to **plugin(s)**
### Packer Provider (via this SDK)
- acts as RPC _server_
- executes any domain-specific logic based on received parsed configuration. For builders this includes managing the vm lifecycle on a give hypervisor or cloud; for provisioners this involves calling the operation on the remote instance.
- tests domain-specific logic via provided acceptance test framework
- provides **Core** with template validation, artifact information, and information about whether the plugin process succeeded or failed.
## Migrating to SDK from built-in SDK
Migrating to the standalone SDK v1 is covered on the [Plugin SDK section](https://www.packer.io/docs/extend/plugin-sdk.html) of the website.
## Versioning
The Packer Plugin SDK is a [Go module](https://github.com/golang/go/wiki/Modules) versioned using [semantic versioning](https://semver.org/).
## Contributing
See [`.github/CONTRIBUTING.md`](https://github.com/hashicorp/packer-plugin-sdk/blob/master/.github/CONTRIBUTING.md)
## License
[Mozilla Public License v2.0](https://github.com/hashicorp/Packer-plugin-sdk/blob/master/LICENSE)