generated from hashicorp/terraform-provider-scaffolding-framework
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
54b51d3
commit cf6969e
Showing
1 changed file
with
41 additions
and
36 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 |
---|---|---|
@@ -1,64 +1,69 @@ | ||
# Terraform Provider Scaffolding (Terraform Plugin Framework) | ||
# Artie Terraform Provider | ||
|
||
_This template repository is built on the [Terraform Plugin Framework](https://github.com/hashicorp/terraform-plugin-framework). The template repository built on the [Terraform Plugin SDK](https://github.com/hashicorp/terraform-plugin-sdk) can be found at [terraform-provider-scaffolding](https://github.com/hashicorp/terraform-provider-scaffolding). See [Which SDK Should I Use?](https://developer.hashicorp.com/terraform/plugin/framework-benefits) in the Terraform documentation for additional information._ | ||
Currently in development. TODO: [publish it on the Terraform Registry](https://developer.hashicorp.com/terraform/registry/providers/publishing) | ||
|
||
This repository is a *template* for a [Terraform](https://www.terraform.io) provider. It is intended as a starting point for creating Terraform providers, containing: | ||
## Requirements | ||
|
||
- A resource and a data source (`internal/provider/`), | ||
- Examples (`examples/`) and generated documentation (`docs/`), | ||
- Miscellaneous meta files. | ||
- [Terraform](https://developer.hashicorp.com/terraform/downloads) >= 1.0 | ||
- [Go](https://golang.org/doc/install) >= 1.21 | ||
|
||
These files contain boilerplate code that you will need to edit to create your own Terraform provider. Tutorials for creating Terraform providers can be found on the [HashiCorp Developer](https://developer.hashicorp.com/terraform/tutorials/providers-plugin-framework) platform. _Terraform Plugin Framework specific guides are titled accordingly._ | ||
## Developing the Provider | ||
|
||
Please see the [GitHub template repository documentation](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/creating-a-repository-from-a-template) for how to create a new repository from this template on GitHub. | ||
Create a `~/.terraformrc` file containing the following: | ||
|
||
Once you've written your provider, you'll want to [publish it on the Terraform Registry](https://developer.hashicorp.com/terraform/registry/providers/publishing) so that others can use it. | ||
``` | ||
provider_installation { | ||
## Requirements | ||
dev_overrides { | ||
"artie.com/terraform/artie" = "/Users/<your-username>/go/bin" | ||
} | ||
- [Terraform](https://developer.hashicorp.com/terraform/downloads) >= 1.0 | ||
- [Go](https://golang.org/doc/install) >= 1.21 | ||
# For all other providers, install them directly from their origin provider | ||
# registries as normal. If you omit this, Terraform will _only_ use | ||
# the dev_overrides block, and so no other providers will be available. | ||
direct {} | ||
} | ||
``` | ||
|
||
To compile the provider, run `go install`. This will build the provider and put the provider binary in the `$GOPATH/bin` directory. | ||
|
||
## Building The Provider | ||
**You'll need to run `go install` any time you make changes to the provider code before running it again locally.** | ||
|
||
1. Clone the repository | ||
1. Enter the repository directory | ||
1. Build the provider using the Go `install` command: | ||
This provider requires an Artie API key. To run it against your local Artie API instance, create a new API key through the dashboard (locally) and then set the following env vars: | ||
|
||
```shell | ||
go install | ||
export ARTIE_API_KEY=<yoursecretkey> | ||
export ARTIE_ENDPOINT=https://0.0.0.0:8000/api | ||
``` | ||
|
||
## Adding Dependencies | ||
The `examples/` directory contains example Terraform config files. To test managing an Artie deployment with this provider: | ||
|
||
This provider uses [Go modules](https://github.com/golang/go/wiki/Modules). | ||
Please see the Go documentation for the most up to date information about using Go modules. | ||
```shell | ||
cd examples/deployments | ||
terraform plan | ||
terraform apply | ||
``` | ||
|
||
To add a new dependency `github.com/author/dependency` to your Terraform provider: | ||
You'll be prompted for any secrets that are specified in the config. You can avoid having to enter them each time by setting them as env vars, e.g.: | ||
|
||
```shell | ||
go get github.com/author/dependency | ||
go mod tidy | ||
export TF_VAR_snowflake_password=... | ||
export TF_VAR_mongodb_password=... | ||
``` | ||
|
||
Then commit the changes to `go.mod` and `go.sum`. | ||
To run with a particular log level: | ||
```shell | ||
TF_LOG=INFO terraform plan | ||
``` | ||
|
||
## Using the provider | ||
### Documentation | ||
|
||
Fill this in for each provider | ||
To generate or update documentation, run `go generate`. If you make changes to a resource's schema and don't run this, a CI check will fail until you run it and commit the result. | ||
|
||
## Developing the Provider | ||
### Testing | ||
|
||
If you wish to work on the provider, you'll first need [Go](http://www.golang.org) installed on your machine (see [Requirements](#requirements) above). | ||
|
||
To compile the provider, run `go install`. This will build the provider and put the provider binary in the `$GOPATH/bin` directory. | ||
|
||
To generate or update documentation, run `go generate`. | ||
TODO: add acceptance tests before publishing. | ||
|
||
In order to run the full suite of Acceptance tests, run `make testacc`. | ||
|
||
*Note:* Acceptance tests create real resources, and often cost money to run. | ||
|
||
```shell | ||
make testacc | ||
``` |