71 lines
2.3 KiB
Markdown
71 lines
2.3 KiB
Markdown
# Receita terraform example provider
|
|
|
|
## What?
|
|
|
|
This is a terraform provider to serve as example. This will give an API to generate receipts based on a terraform
|
|
provider.
|
|
|
|
## Building?
|
|
|
|
First step in this journey was to install go language. For that you can just follow something like [this](https://go.dev/doc/install).
|
|
|
|
Next we need to init this as a [go module](https://go.dev/doc/tutorial/create-module) this is basically to help us to manage go dependencies.
|
|
|
|
For this first step we ended with
|
|
|
|
```sh
|
|
go mod init balhau.net/receita-provider
|
|
```
|
|
|
|
the output of this command was the creation of the `go.mod` file.
|
|
|
|
Since the goal here is to build a terraform provider we must add the terraform libraries needed for that. This can be achieved with
|
|
|
|
```sh
|
|
go get
|
|
```
|
|
|
|
To be able to use this terraform plugin you'll need to build this go project with
|
|
|
|
```sh
|
|
go build
|
|
```
|
|
|
|
And then move the binary into your terraform plugin directory, something like this
|
|
|
|
```
|
|
~/.terraform.d/plugins/terraform.local/balhau/receita/1.0.0/darwin_amd64/terraform-provider-receita
|
|
```
|
|
|
|
## Running?
|
|
|
|
### Setting the http mock server
|
|
|
|
After previous steps were taken of we are ready to run the receita terraform provider. The provider will do some http calls to the endpoint defined in the provider definition. This means that we should put a service running that matches the description in the endpoint definition
|
|
|
|
```
|
|
provider "receita" {
|
|
endpoint = "http://localhost:9999"
|
|
}
|
|
```
|
|
|
|
### Running this
|
|
|
|
Managing terraform providers involves a bit of typing in the command line. To avoid typing to much we have here a `Makefile` with most of the command line instructions we need.
|
|
|
|
To figure out how to use this makefile just type
|
|
|
|
```sh
|
|
make help
|
|
|
|
help: Show this help.
|
|
clean-bin: Clean all the generated binaries
|
|
clean-terraform-state: Clean all the terraform state generated by terraform-init/terraform-apply
|
|
clean: Clean all the generated resources
|
|
terraform-init: Execute terraform-init on example terraform directory
|
|
terraform-apply: Execute terraform-apply on example directory
|
|
build: Build binaries, both the backed dummy server as the terraform provider binary
|
|
install-provider: Install provider in the terraform plugin directory
|
|
run-backend: Start the backend web server
|
|
```
|
|
|