Packer Plugin Scaffolding
This repository is a template for a Packer multi-component plugin. It is intended as a starting point for creating Packer plugins, containing:
These folders contain boilerplate code that you will need to edit to create your own Packer multi-component plugin.
A full guide to creating Packer plugins can be found at Extending Packer.
In this repository you will also find a pre-defined GitHub Action configuration for the release workflow
(.goreleaser.yml
and .github/workflows/release.yml
). The release workflow configuration makes sure the GitHub
release artifacts are created with the correct binaries and naming conventions.
Please see the GitHub template repository documentation
for how to create a new repository from this template on GitHub.
Packer plugin projects
Here's a non exaustive list of Packer plugins that you can checkout:
Looking at their code will give you good examples.
Build from source
-
Clone this GitHub repository locally.
-
Run this command from the root directory:
go build -ldflags="-X github.com/synology-community/packer-plugin-synopkg/version.VersionPrerelease=dev" -o packer-plugin-synopkg
-
After you successfully compile, the packer-plugin-synopkg
plugin binary file is in the root directory.
-
To install the compiled plugin, run the following command
packer plugins install --path packer-plugin-synopkg github.com/hashicorp/synopkg
Build on *nix systems
Unix like systems with the make, sed, and grep commands installed can use the make dev
to execute the build from source steps.
Build on Windows Powershell
The preferred solution for building on Windows are steps 2-4 listed above.
If you would prefer to script the building process you can use the following as a guide
$MODULE_NAME = (Get-Content go.mod | Where-Object { $_ -match "^module" }) -replace 'module ',''
$FQN = $MODULE_NAME -replace 'packer-plugin-',''
go build -ldflags="-X $MODULE_NAME/version.VersionPrerelease=dev" -o packer-plugin-synopkg.exe
packer plugins install --path packer-plugin-synopkg.exe $FQN
Running Acceptance Tests
Make sure to install the plugin locally using the steps in Build from source.
Once everything needed is set up, run:
PACKER_ACC=1 go test -count 1 -v ./... -timeout=120m
This will run the acceptance tests for all plugins in this set.
Registering Plugin as Packer Integration
Partner and community plugins can be hard to find if a user doesn't know what
they are looking for. To assist with plugin discovery Packer offers an integration
portal at https://developer.hashicorp.com/packer/integrations to list known integrations
that work with the latest release of Packer.
Registering a plugin as an integration requires metadata configuration within the plugin
repository and approval by the Packer team. To initiate the process of registering your
plugin as a Packer integration refer to the Developing Plugins page.
Requirements
Packer Compatibility
This synopkg template is compatible with Packer >= v1.10.2