Terraform Vault provider
https://github.com/hashicorp/terraform-provider-vault.git
Terraform Provider ==================

Best Practices
This webinar walks you through how to protect secrets when using Terraform with Vault. Additional security measures are available in paid Terraform versions as well.
Requirements
$GOPATH/src/github.com/hashicorp/terraform-provider-vault
$ mkdir -p $GOPATH/src/github.com/hashicorp; cd $GOPATH/src/github.com/hashicorp
$ git clone git@github.com:hashicorp/terraform-provider-vault
Enter the provider directory and build the provider
$ cd $GOPATH/src/github.com/hashicorp/terraform-provider-vault
$ make build
Developing the Provider
$GOPATH/bin to your $PATH.
To compile the provider, run make build. This will build the provider and put the provider binary in the $GOPATH/bin directory.
$ make build
...
$ $GOPATH/bin/terraform-provider-vault
...
In order to test the provider, you can simply run make test.
$ make test
In order to run the full suite of Acceptance tests, you will need the following:
Note: Acceptance tests create real resources, and often cost money to run.
VAULT_ADDR - location of VaultVAULT_TOKEN - token used to query Vault. These tests do not attempt to read ~/.vault-token.AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYGOOGLE_CREDENTIALS the contents of a GCP creds JSON, alternatively read from GOOGLE_CREDENTIALS_FILERMQ_CONNECTION_URIRMQ_USERNAMERMQ_PASSWORDARM_SUBSCRIPTION_IDARM_TENANT_IDARM_CLIENT_IDARM_CLIENT_SECRETARM_RESOURCE_GROUPmake testaccTESTARGS environment variable:
TESTARGS="--run DataSourceAWSAccessCredentials" make testacc
Using a local development build
Configure Terraform to use the development build of the provider.
warning: backup your ~/.terraformrc before running this command:
cat > ~/.terraformrc <<HERE
provider_installation {
dev_overrides {
"hashicorp/vault" = "$HOME/.terraform.d/plugins"
}
# 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 {}
}
HERE
Then execute the dev make target from the project root.
make dev
Now Terraform is set up to use the dev provider build instead of the provider
from the HashiCorp registry.
Debugging the Provider
You can enable debbuging with the make debug target:
make debug
This target will build a binary with compiler optimizations disabled and copy
the provider binary to the ~/.terraform.d/plugins directory. Next run Delve
on the host machine:
dlv exec --accept-multiclient --continue --headless --listen=:2345 \
~/.terraform.d/plugins/terraform-provider-vault -- -debug
The above command enables the debugger to run the process for you.
terraform-provider-vault is the name of the executable that was built with
the make debug target. The above command will also output the
TF_REATTACH_PROVIDERS information:
TF_REATTACH_PROVIDERS='{"hashicorp/vault":{"Protocol":"grpc","ProtocolVersion":5,"Pid":52780,"Test":true,"Addr":{"Network":"unix","String":"/var/folders/g1/9xn1l6mx0x1dry5wqm78fjpw0000gq/T/plugin2557833286"}}}'
Connect your debugger, such as your editor or the Delve CLI, to the debug server. The following command will connect with the Delve CLI:
dlv connect :2345
At this point you may set breakpoint in your code.
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.