Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/krystal/terraform-provider-katapult

Terraform Provider for Katapult.
https://github.com/krystal/terraform-provider-katapult

automation go golang infrastructure infrastructure-as-code katapult terraform terraform-katapult terraform-provider

Last synced: 2 months ago
JSON representation

Terraform Provider for Katapult.

Awesome Lists containing this project

README

        


logo


Katapult Terraform Provider



GitHub tag (latest SemVer)


Build Status


Nightly Acceptance Tests


GitHub issues


GitHub pull requests


License Status

## Documentation

- Katapult Terraform Provider:
[https://registry.terraform.io/providers/krystal/katapult/latest/docs](https://registry.terraform.io/providers/krystal/katapult/latest/docs)
- Katapult website: [https://katapult.io](https://katapult.io)
- Terraform website: [https://www.terraform.io](https://www.terraform.io)

## Status

This provider is still in the early stages of development. As we add and expand
functionality to support more of Katapult's features, we will do our best to
avoid breaking changes. If breaking changes are required, they will be clearly
listed in the release notes and changelog.

## Requirements

- [Terraform](https://www.terraform.io/downloads.html) 1.3 or later.

## Using the Provider

To quickly get started with using the provider, please refer to the
[official documentation](https://registry.terraform.io/providers/krystal/katapult/latest/docs)
hosted on Terraform Registry.

If you are new to Terraform itself, please refer to the official
[Terraform Documentation](https://www.terraform.io/docs/index.html).

## Build the Provider

Clone the provider to your machine, for example:
`~/Projects/terraform-provider-katapult`

```bash
git clone [email protected]:krystal/terraform-provider-katapult.git ~/Projects/terraform-provider-katapult
```

Enter the provider directory and build the provider:

```bash
cd ~/Projects/terraform-provider-katapult
make build
```

## Developing the Provider

### Requirements

- [Go](https://golang.org/dl/) 1.21 or later.
- [Terraform](https://www.terraform.io/downloads.html) 1.3 or later.

### Rules

- Always follow the
[Conventional Commit](https://www.conventionalcommits.org/en/v1.0.0/) standard
when writing your commit messages. This will among other things, ensure
relevant changes are automatically added to the Changelog.

### Make Targets

- `make build` — Build provider binary into `bin/terraform-provider-katapult`
- `make install` — Build provider binary, and install it to
`~/.terraform.d/plugins/registry.terraform.io/krystal/katapult/{VERSION}/`,
allowing Terraform to use the custom builds.
- `make test` — Run unit tests.
- `make testacc` — Run acceptance tests. By default it prevents requests to
Katapult's API to create real resources, and instead plays back previously
record requests. To enable real requests against Katapult, set the `VCR`
environment variable to `rec` to record requests, or `off` to disable the VCR
request recording/playback all together.
- `make lint` — Run golangci-lint to lint all Go code.
- `make docs` — Re-generate docs into `./docs` folder.

## Releasing the Provider

Creating a new release is a semi-manual process with some tools to help along
the way.

All Terraform providers must follow [Semantic Versioning](https://semver.org),
and this provider is no different. To help make this easier, we use the
[Conventional Commit](https://www.conventionalcommits.org/en/v1.0.0/) commit
message format, along with Google's
[release-please](https://github.com/googleapis/release-please) tool.

The end result is, that whenever `main` changes, release-please will create or
update a release pull request as needed. The PR contains updates to the
changelog, and has automatically calculated and bumped the version as needed
based on Conventional Commits and Semantic Versioning.

Merging the release PR, will trigger a full release with binaries being built
and published to a GitHub Release. However, because the release is created and
published by release-please before goreleaser runs and builds binary assets, the
Terraform Registry may complain it found no binary assets. In that case forcing
a re-sync under the provider settings in Terraform Registry should resolve it.