generated from hashicorp/packer-plugin-scaffolding
-
Notifications
You must be signed in to change notification settings - Fork 20
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
docs: Upgrade plugin to integrations framework
- Loading branch information
Showing
9 changed files
with
444 additions
and
63 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
name: Ensure Docs are Compiled | ||
on: | ||
push: | ||
jobs: | ||
ensure-docs-compiled: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout 🛎 | ||
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 | ||
- uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 | ||
- shell: bash | ||
run: make build-docs | ||
- shell: bash | ||
run: | | ||
if [[ -z "$(git status -s)" ]]; then | ||
echo "OK" | ||
else | ||
echo "Docs have been updated, but the compiled docs have not been committed." | ||
echo "Run 'make build-docs', and commit the result to resolve this error." | ||
exit 1 | ||
fi | ||
46 changes: 46 additions & 0 deletions
46
.github/workflows/notify-integration-release-via-manual.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
name: Notify Integration Release (Manual) | ||
on: | ||
workflow_dispatch: | ||
inputs: | ||
version: | ||
description: "The release version (semver)" | ||
default: 0.0.1 | ||
required: false | ||
branch: | ||
description: "A branch or SHA" | ||
default: 'main' | ||
required: false | ||
jobs: | ||
notify-release: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout this repo | ||
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 | ||
with: | ||
ref: ${{ github.event.inputs.branch }} | ||
# Ensure that Docs are Compiled | ||
- uses: actions/setup-go@v4 | ||
- shell: bash | ||
run: make build-docs | ||
- shell: bash | ||
run: | | ||
if [[ -z "$(git status -s)" ]]; then | ||
echo "OK" | ||
else | ||
echo "Docs have been updated, but the compiled docs have not been committed." | ||
echo "Run 'make build-docs', and commit the result to resolve this error." | ||
exit 1 | ||
fi | ||
# Perform the Release | ||
- name: Checkout integration-release-action | ||
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 | ||
with: | ||
repository: hashicorp/integration-release-action | ||
path: ./integration-release-action | ||
- name: Notify Release | ||
uses: ./integration-release-action | ||
with: | ||
integration_identifier: 'packer/hashicorp/hcloud' | ||
release_version: ${{ github.event.inputs.version }} | ||
release_sha: ${{ github.event.inputs.branch }} | ||
github_token: ${{ secrets.GITHUB_TOKEN }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
name: Notify Integration Release (Tag) | ||
on: | ||
push: | ||
tags: | ||
- '*.*.*' # Proper releases | ||
- '*.*.*-*' # Pre releases | ||
jobs: | ||
notify-release: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout this repo | ||
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 | ||
with: | ||
ref: ${{ github.ref }} | ||
# Ensure that Docs are Compiled | ||
- uses: actions/setup-go@v4 | ||
- shell: bash | ||
run: make build-docs | ||
- shell: bash | ||
run: | | ||
if [[ -z "$(git status -s)" ]]; then | ||
echo "OK" | ||
else | ||
echo "Docs have been updated, but the compiled docs have not been committed." | ||
echo "Run 'make build-docs', and commit the result to resolve this error." | ||
exit 1 | ||
fi | ||
# Perform the Release | ||
- name: Checkout integration-release-action | ||
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 | ||
with: | ||
repository: hashicorp/integration-release-action | ||
path: ./integration-release-action | ||
- name: Notify Release | ||
uses: ./integration-release-action | ||
with: | ||
integration_identifier: 'packer/hashicorp/hcloud' | ||
release_version: ${{ github.ref_name }} | ||
release_sha: ${{ github.ref }} | ||
github_token: ${{ secrets.GITHUB_TOKEN }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
The `hcloud` Packer plugin is able to create new images for use with [Hetzner | ||
Cloud](https://www.hetzner.cloud). | ||
|
||
### Installation | ||
|
||
To install this plugin, copy and paste this code into your Packer configuration, then run [`packer init`](https://www.packer.io/docs/commands/init). | ||
|
||
```hcl | ||
packer { | ||
required_plugins { | ||
hcloud = { | ||
source = "github.com/hashicorp/hcloud" | ||
version = "~> 1" | ||
} | ||
} | ||
} | ||
``` | ||
|
||
Alternatively, you can use `packer plugins install` to manage installation of this plugin. | ||
|
||
```sh | ||
$ packer plugins install github.com/hashicorp/hcloud | ||
``` | ||
|
||
### Components | ||
|
||
#### Builders | ||
|
||
- [hcloud](/packer/integrations/hashicorp/hcloud/latest/components/builder/hetzner-cloud) - The hcloud builder | ||
lets you create custom images on Hetzner Cloud by launching an instance, provisioning it, then | ||
export it as an image for later reuse. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,142 @@ | ||
Type: `hcloud` | ||
Artifact BuilderId: `hcloud.builder` | ||
|
||
The `hcloud` Packer builder is able to create new images for use with [Hetzner | ||
Cloud](https://www.hetzner.cloud). The builder takes a source image, runs any | ||
provisioning necessary on the image after launching it, then snapshots it into | ||
a reusable image. This reusable image can then be used as the foundation of new | ||
servers that are launched within the Hetzner Cloud. | ||
|
||
The builder does _not_ manage images. Once it creates an image, it is up to you | ||
to use it or delete it. | ||
|
||
## Configuration Reference | ||
|
||
There are many configuration options available for the builder. They are | ||
segmented below into two categories: required and optional parameters. Within | ||
each category, the available configuration keys are alphabetized. | ||
|
||
In addition to the options listed here, a | ||
[communicator](/packer/docs/templates/legacy_json_templates/communicator) can be configured for this | ||
builder. | ||
|
||
### Required Builder Configuration options: | ||
|
||
- `token` (string) - The client TOKEN to use to access your account. It can | ||
also be specified via environment variable `HCLOUD_TOKEN`, if set. | ||
|
||
- `image` (string) - ID or name of image to launch server from. Alternatively | ||
you can use `image_filter`. | ||
|
||
- `location` (string) - The name of the location to launch the server in. | ||
|
||
- `server_type` (string) - ID or name of the server type this server should | ||
be created with. | ||
|
||
### Optional: | ||
|
||
- `endpoint` (string) - Non standard api endpoint URL. Set this if you are | ||
using a Hetzner Cloud API compatible service. It can also be specified via | ||
environment variable `HCLOUD_ENDPOINT`. | ||
|
||
- `image_filter` (object) - Filters used to populate the `filter` | ||
field. Example: | ||
|
||
```hcl | ||
image_filter { | ||
most_recent = true | ||
with_selector = ["name==my-image"] | ||
} | ||
``` | ||
|
||
This selects the most recent image with the label `name==my-image`. NOTE: | ||
This will fail unless _exactly_ one AMI is returned. In the above example, | ||
`most_recent` will cause this to succeed by selecting the newest image. | ||
|
||
- `with_selector` (list of strings) - label selectors used to select an | ||
`image`. NOTE: This will fail unless _exactly_ one image is returned. | ||
Check the official hcloud docs on | ||
[Label Selectors](https://docs.hetzner.cloud/#overview-label-selector) | ||
for more info. | ||
|
||
- `most_recent` (boolean) - Selects the newest created image when true. | ||
This is most useful if you base your image on another Packer build image. | ||
|
||
You may set this in place of `image`, but not both. | ||
|
||
- `server_name` (string) - The name assigned to the server. The Hetzner Cloud | ||
sets the hostname of the machine to this value. | ||
|
||
- `snapshot_name` (string) - The name of the resulting snapshot that will | ||
appear in your account as image description. Defaults to `packer-{{timestamp}}` (see | ||
[configuration templates](/packer/docs/templates/legacy_json_templates/engine) for more info). | ||
The snapshot_name must be unique per architecture. | ||
If you want to reference the image as a sample in your terraform configuration please use the image id or the `snapshot_labels`. | ||
|
||
- `snapshot_labels` (map of key/value strings) - Key/value pair labels to | ||
apply to the created image. | ||
|
||
- `poll_interval` (string) - Configures the interval in which actions are | ||
polled by the client. Default `500ms`. Increase this interval if you run | ||
into rate limiting errors. | ||
|
||
- `user_data` (string) - User data to launch with the server. Packer will not | ||
automatically wait for a user script to finish before shutting down the | ||
instance this must be handled in a provisioner. | ||
|
||
- `user_data_file` (string) - Path to a file that will be used for the user | ||
data when launching the server. | ||
|
||
- `ssh_keys` (array of strings) - List of SSH keys by name or id to be added | ||
to image on launch. | ||
|
||
<!-- Code generated from the comments of the SSHTemporaryKeyPair struct in communicator/config.go; DO NOT EDIT MANUALLY --> | ||
|
||
- `temporary_key_pair_type` (string) - `dsa` | `ecdsa` | `ed25519` | `rsa` ( the default ) | ||
|
||
Specifies the type of key to create. The possible values are 'dsa', | ||
'ecdsa', 'ed25519', or 'rsa'. | ||
|
||
NOTE: DSA is deprecated and no longer recognized as secure, please | ||
consider other alternatives like RSA or ED25519. | ||
|
||
- `temporary_key_pair_bits` (int) - Specifies the number of bits in the key to create. For RSA keys, the | ||
minimum size is 1024 bits and the default is 4096 bits. Generally, 3072 | ||
bits is considered sufficient. DSA keys must be exactly 1024 bits as | ||
specified by FIPS 186-2. For ECDSA keys, bits determines the key length | ||
by selecting from one of three elliptic curve sizes: 256, 384 or 521 | ||
bits. Attempting to use bit lengths other than these three values for | ||
ECDSA keys will fail. Ed25519 keys have a fixed length and bits will be | ||
ignored. | ||
|
||
NOTE: DSA is deprecated and no longer recognized as secure as specified | ||
by FIPS 186-5, please consider other alternatives like RSA or ED25519. | ||
|
||
<!-- End of code generated from the comments of the SSHTemporaryKeyPair struct in communicator/config.go; --> | ||
|
||
|
||
- `rescue` (string) - Enable and boot in to the specified rescue system. This | ||
enables simple installation of custom operating systems. `linux64` or `linux32` | ||
|
||
- `upgrade_server_type` (string) - ID or name of the server type this server should | ||
be upgraded to, without changing the disk size. Improves building performance. | ||
The resulting snapshot is compatible with smaller server types and disk sizes. | ||
|
||
## Basic Example | ||
|
||
Here is a basic example. It is completely valid as soon as you enter your own | ||
access tokens: | ||
|
||
```hcl | ||
source "hcloud" "basic_example" { | ||
token = "YOUR API TOKEN" | ||
image = "ubuntu-22.04" | ||
location = "nbg1" | ||
server_type = "cx11" | ||
ssh_username = "root" | ||
} | ||
build { | ||
sources = ["source.hcloud.basic_example"] | ||
} | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
# For full specification on the configuration of this file visit: | ||
# https://github.com/hashicorp/integration-template#metadata-configuration | ||
integration { | ||
name = "Hetzner Cloud" | ||
description = "The hcloud plugin can be used with HashiCorp Packer to create custom images on Hetzner Cloud." | ||
identifier = "packer/hashicorp/hcloud" | ||
component { | ||
type = "builder" | ||
name = "Hetzner Cloud" | ||
slug = "hcloud" | ||
} | ||
} |
Oops, something went wrong.