add readme to plugin-sdk subdir
This commit is contained in:
parent
a6b6819b1d
commit
575f8ab8e8
|
@ -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)
|
Loading…
Reference in New Issue