Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hashicorp/terraform-provider-cloudinit
Utility provider that exposes the cloudinit_config data source which renders a multipart MIME configuration for use with cloud-init (previously available as the template_cloudinit_config resource in the template provider)
https://github.com/hashicorp/terraform-provider-cloudinit
cloud-init terraform terraform-provider
Last synced: 7 days ago
JSON representation
Utility provider that exposes the cloudinit_config data source which renders a multipart MIME configuration for use with cloud-init (previously available as the template_cloudinit_config resource in the template provider)
- Host: GitHub
- URL: https://github.com/hashicorp/terraform-provider-cloudinit
- Owner: hashicorp
- License: mpl-2.0
- Created: 2019-10-04T19:34:11.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2024-12-09T00:15:08.000Z (16 days ago)
- Last Synced: 2024-12-10T21:02:44.870Z (14 days ago)
- Topics: cloud-init, terraform, terraform-provider
- Language: Go
- Homepage: https://registry.terraform.io/providers/hashicorp/cloudinit/latest
- Size: 7.03 MB
- Stars: 104
- Watchers: 13
- Forks: 17
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
- Support: .github/SUPPORT.md
Awesome Lists containing this project
README
# Terraform Provider: cloud-init
The cloud-init provider supports rendering [cloud-init](https://cloudinit.readthedocs.io) configurations in a [MIME multi-part file](https://cloudinit.readthedocs.io/en/latest/explanation/format.html#mime-multi-part-archive).
> _This provider is intended to replace the [template provider](https://www.terraform.io/docs/providers/template/). General templating can now be achieved through the [`templatefile`](https://www.terraform.io/docs/configuration/functions/templatefile.html) function, without creating a separate data resource._
> _This provider exposes the `cloudinit_config` data source and resource, previously available as the [`template_cloudinit_config`](https://www.terraform.io/docs/providers/template/d/cloudinit_config.html) in the template provider._## Documentation, questions and discussions
Official documentation on how to use this provider can be found on the
[Terraform Registry](https://registry.terraform.io/providers/hashicorp/cloudinit/latest/docs).
In case of specific questions or discussions, please use the
HashiCorp [Terraform Providers Discuss forums](https://discuss.hashicorp.com/c/terraform-providers/31),
in accordance with HashiCorp [Community Guidelines](https://www.hashicorp.com/community-guidelines).We also provide:
* [Support](.github/SUPPORT.md) page for help when using the provider
* [Contributing](.github/CONTRIBUTING.md) guidelines in case you want to help this project
* [Design](DESIGN.md) documentation to understand the scope and maintenance decisionsThe remainder of this document will focus on the development aspects of the provider.
## Requirements
* [Terraform](https://www.terraform.io/downloads)
* [Go](https://go.dev/doc/install) (1.22)
* [GNU Make](https://www.gnu.org/software/make/)
* [golangci-lint](https://golangci-lint.run/usage/install/#local-installation) (optional)## Development
### Building
1. `git clone` this repository and `cd` into its directory
2. `make` will trigger the Golang buildThe provided `GNUmakefile` defines additional commands generally useful during development,
like for running tests, generating documentation, code formatting and linting.
Taking a look at it's content is recommended.### Testing
In order to test the provider, you can run
* `make test` to run provider tests
* `make testacc` to run provider acceptance testsIt's important to note that acceptance tests (`testacc`) will actually spawn
`terraform` and the provider. Read more about they work on the
[official page](https://www.terraform.io/plugin/sdkv2/testing/acceptance-tests).### Generating documentation
This provider uses [terraform-plugin-docs](https://github.com/hashicorp/terraform-plugin-docs/)
to generate documentation and store it in the `docs/` directory.
Once a release is cut, the Terraform Registry will download the documentation from `docs/`
and associate it with the release version. Read more about how this works on the
[official page](https://www.terraform.io/registry/providers/docs).Use `make generate` to ensure the documentation is regenerated with any changes.
### Using a development build
If [running tests and acceptance tests](#testing) isn't enough, it's possible to set up a local terraform configuration
to use a development builds of the provider. This can be achieved by leveraging the Terraform CLI
[configuration file development overrides](https://www.terraform.io/cli/config/config-file#development-overrides-for-provider-developers).First, use `make install` to place a fresh development build of the provider in your
[`${GOBIN}`](https://pkg.go.dev/cmd/go#hdr-Compile_and_install_packages_and_dependencies)
(defaults to `${GOPATH}/bin` or `${HOME}/go/bin` if `${GOPATH}` is not set). Repeat
this every time you make changes to the provider locally.Then, setup your environment following [these instructions](https://www.terraform.io/plugin/debugging#terraform-cli-development-overrides)
to make your local terraform use your local build.### Testing GitHub Actions
This project uses [GitHub Actions](https://docs.github.com/en/actions/automating-builds-and-tests) to realize its CI.
Sometimes it might be helpful to locally reproduce the behaviour of those actions,
and for this we use [act](https://github.com/nektos/act). Once installed, you can _simulate_ the actions executed
when opening a PR with:```shell
# List of workflows for the 'pull_request' action
$ act -l pull_request# Execute the workflows associated with the `pull_request' action
$ act pull_request
```## Releasing
The release process is automated via GitHub Actions, and it's defined in the Workflow
[release.yml](./.github/workflows/release.yml). To cut a release:- Go to the repository in Github and click on the `Actions` tab.
- Select the `Release` workflow on the left-hand menu.
- Click on the `Run workflow` button.
- Select the branch to cut the release from (default is main).
- Input the `Release version number` which is the Semantic Release number including the `v` prefix (i.e. `v1.4.0`) and click `Run workflow` to kickoff the release.## License
[Mozilla Public License v2.0](./LICENSE)