Categorygithub.com/dariusbakunas/terraform-provider-opentoolchain

# Packages

No description provided by the author

# README

Terraform logo

Terraform Provider for Open Toolchains

Check examples folder for working examples

documentation

Development

Requirements

  • Terraform 0.13.6+ (to run acceptance tests)
  • Go 1.15.8+ (to build the provider plugin)

Quick Start

First, clone the repository:

git clone [email protected]:dariusbakunas/terraform-provider-opentoolchain.git

To compile the provider, run make build. This will build the provider and put the provider binary in the current directory.

make build

To test new binary, create .terraformrc in your home folder, with contents:

provider_installation {
	dev_overrides {
    	"registry.terraform.io/dariusbakunas/opentoolchain" = "<PATH TO BINARY (location of this git clone)>/terraform-provider-opentoolchain"
  	}

  	direct {}
}

You will get a warning next time you run terraform:

╷
│ Warning: Provider development overrides are in effect
│ 
│ The following provider development overrides are set in the CLI configuration:
│  - dariusbakunas/opentoolchain in <...>/terraform-provider-opentoolchain
│ 
│ The behavior may therefore not match any released version of the provider and applying changes may cause the state to become incompatible with published releases.
╵

When done, remove .terraformrc or comment out dev_overrides section.

Testing

To run unit tests, simply run:

make test

To run acceptance tests, make sure IAM_API_KEY environment variable is set and execute:

make testacc

Note: Acceptance tests create/destroy real resources, while they are named using tf_acc_test testing prefix, use some caution. Check provider_test.go contents for supported environment variables and their default values.

Documentation

Environment setup

  1. Install pipenv
% brew install pipenv
  1. Install pyenv
% brew install pyenv
  1. Use pyenv to install Python 3 if not installed already (run pyenv versions to check installed versions or pyenv list to list available for install):
% pyenv install 3.8.1
  1. Run pipenv install to install mkdocs dependencies

  2. In order to activate the virtual environment associated with this project you can simply use the shell keyword:

% pipenv shell

Generating docs

  1. To generate or update Terraform documentation, run go generate.

  2. To serve mk-docs locally, run mkdocs serve.

  3. To push changes to gh-pages branch, run mkdocs gh-deploy

Debugging

Run your debugger (eg. delve), and pass it the provider binary as the command to run, specifying whatever flags, environment variables, or other input is necessary to start the provider in debug mode:

make build-debug
dlv exec --listen=:54526 --headless ./terraform-provider-opentoolchain -- --debug

Note: IntelliJ may need additional flag --api-version=2

Connect your debugger (whether it's your IDE or the debugger client) to the debugger server. Example launch configuration for VSCode:

{
    "apiVersion": 1,
    "name": "Debug",
    "type": "go",
    "request": "attach",
    "mode": "remote",
    "port": 54526, 
    "host": "127.0.0.1",
    "showLog": true,
    //"trace": "verbose",            
}

Have it continue execution and it will print output like the following to stdout:

Provider started, to attach Terraform set the TF_REATTACH_PROVIDERS env var:

        TF_REATTACH_PROVIDERS='{"dariusbakunas/opentoolchain":{"Protocol":"grpc","Pid":30101,"Test":true,"Addr":{"Network":"unix","String":"/var/folders/mq/00hw97gj08323ybqfm763plr0000gn/T/plugin900766792"}}}'

Copy the line starting with TF_REATTACH_PROVIDERS from your provider's output. Either export it, or prefix every Terraform command with it. Run Terraform as usual. Any breakpoints you have set will halt execution and show you the current variable values.