terraform-provider-vault: terraform validate fails on module with vault resources
terraform validate fails when run on a module without the provider (as recommended in the Terraform documentation).
This is most likely due to the implicit provider being created without an address parameter.
Terraform Version
$ terraform -v
Terraform v0.12.19
+ provider.vault v2.7.1
Your version of Terraform is out of date! The latest version
is 0.12.20. You can update by downloading from https://www.terraform.io/downloads.html
Affected Resource(s)
- vault_*
Terraform Configuration Files
resource "vault_approle_auth_backend_role" "approle" {
role_name = "test"
token_policies = ["default"]
}
Debug Output
2020/02/05 17:13:29 [WARN] Log levels other than TRACE are currently unreliable, and are supported only for backward compatibility.
Use TF_LOG=TRACE to see Terraform's internal logs.
----
2020/02/05 17:13:29 [INFO] Terraform version: 0.12.19
2020/02/05 17:13:29 [INFO] Go runtime version: go1.12.13
2020/02/05 17:13:29 [INFO] CLI args: []string{"/home/.../.ve/bin/terraform", "validate"}
2020/02/05 17:13:29 [DEBUG] Attempting to open CLI config file: /home/.../.terraformrc
2020/02/05 17:13:29 [DEBUG] File doesn't exist, but doesn't need to. Ignoring.
2020/02/05 17:13:29 [INFO] CLI command args: []string{"validate"}
2020/02/05 17:13:29 [DEBUG] checking for provider in "."
2020/02/05 17:13:29 [DEBUG] checking for provider in "/home/.../.ve/bin"
2020/02/05 17:13:29 [DEBUG] checking for provider in ".terraform/plugins/linux_amd64"
2020/02/05 17:13:29 [DEBUG] found provider "terraform-provider-vault_v2.7.1_x4"
2020/02/05 17:13:29 [DEBUG] found valid plugin: "vault", "2.7.1", "/home/.../terraform/vault-approle/.terraform/plugins/linux_amd64/terraform-provider-vault_v2.7.1_x4"
2020/02/05 17:13:29 [DEBUG] checking for provisioner in "."
2020/02/05 17:13:29 [DEBUG] checking for provisioner in "/home/.../.ve/bin"
2020/02/05 17:13:29 [DEBUG] checking for provisioner in ".terraform/plugins/linux_amd64"
2020-02-05T17:13:29.372Z [INFO] plugin: configuring client automatic mTLS
2020-02-05T17:13:29.433Z [DEBUG] plugin: starting plugin: path=/home/.../terraform/vault-approle/.terraform/plugins/linux_amd64/terraform-provider-vault_v2.7.1_x4 args=[/home/.../terraform/vault-approle/.terraform/plugins/linux_amd64/terraform-provider-vault_v2.7.1_x4]
2020-02-05T17:13:29.434Z [DEBUG] plugin: plugin started: path=/home/.../terraform/vault-approle/.terraform/plugins/linux_amd64/terraform-provider-vault_v2.7.1_x4 pid=16707
2020-02-05T17:13:29.434Z [DEBUG] plugin: waiting for RPC address: path=/home/.../terraform/vault-approle/.terraform/plugins/linux_amd64/terraform-provider-vault_v2.7.1_x4
2020-02-05T17:13:29.462Z [INFO] plugin.terraform-provider-vault_v2.7.1_x4: configuring server automatic mTLS: timestamp=2020-02-05T17:13:29.458Z
2020-02-05T17:13:29.523Z [DEBUG] plugin.terraform-provider-vault_v2.7.1_x4: plugin address: address=/tmp/plugin559701773 network=unix timestamp=2020-02-05T17:13:29.523Z
2020-02-05T17:13:29.523Z [DEBUG] plugin: using plugin: version=5
2020-02-05T17:13:29.660Z [DEBUG] plugin: plugin process exited: path=/home/.../terraform/vault-approle/.terraform/plugins/linux_amd64/terraform-provider-vault_v2.7.1_x4 pid=16707
2020-02-05T17:13:29.660Z [DEBUG] plugin: plugin exited
2020/02/05 17:13:29 [INFO] terraform: building graph: GraphTypeValidate
2020/02/05 17:13:29 [DEBUG] adding implicit provider configuration provider.vault, implied first by vault_approle_auth_backend_role.approle
2020/02/05 17:13:29 [DEBUG] ProviderTransformer: "vault_approle_auth_backend_role.approle" (*terraform.NodeValidatableResource) needs provider.vault
2020/02/05 17:13:29 [DEBUG] ReferenceTransformer: "var.backend" references: []
2020/02/05 17:13:29 [DEBUG] ReferenceTransformer: "var.generate_secret" references: []
2020/02/05 17:13:29 [DEBUG] ReferenceTransformer: "provider.vault" references: []
2020/02/05 17:13:29 [DEBUG] ReferenceTransformer: "vault_approle_auth_backend_role.approle" references: []
2020/02/05 17:13:29 [DEBUG] ReferenceTransformer: "var.module_terraform_vault" references: []
2020/02/05 17:13:29 [DEBUG] ReferenceTransformer: "var.app" references: []
2020/02/05 17:13:29 [DEBUG] Starting graph walk: walkValidate
2020-02-05T17:13:29.661Z [INFO] plugin: configuring client automatic mTLS
2020-02-05T17:13:29.718Z [DEBUG] plugin: starting plugin: path=/home/.../terraform/vault-approle/.terraform/plugins/linux_amd64/terraform-provider-vault_v2.7.1_x4 args=[/home/.../terraform/vault-approle/.terraform/plugins/linux_amd64/terraform-provider-vault_v2.7.1_x4]
2020-02-05T17:13:29.719Z [DEBUG] plugin: plugin started: path=/home/.../terraform/vault-approle/.terraform/plugins/linux_amd64/terraform-provider-vault_v2.7.1_x4 pid=16788
2020-02-05T17:13:29.719Z [DEBUG] plugin: waiting for RPC address: path=/home/.../terraform/vault-approle/.terraform/plugins/linux_amd64/terraform-provider-vault_v2.7.1_x4
2020-02-05T17:13:29.736Z [INFO] plugin.terraform-provider-vault_v2.7.1_x4: configuring server automatic mTLS: timestamp=2020-02-05T17:13:29.736Z
2020-02-05T17:13:29.801Z [DEBUG] plugin.terraform-provider-vault_v2.7.1_x4: plugin address: address=/tmp/plugin312514100 network=unix timestamp=2020-02-05T17:13:29.801Z
2020-02-05T17:13:29.801Z [DEBUG] plugin: using plugin: version=5
2020/02/05 17:13:30 [WARN] <root>: eval: *terraform.EvalValidateProvider, non-fatal err: Missing required argument: The argument "address" is required, but was not set.
2020/02/05 17:13:30 [ERROR] <root>: eval: *terraform.EvalSequence, err: Missing required argument: The argument "address" is required, but was not set.
2020/02/05 17:13:30 [ERROR] <root>: eval: *terraform.EvalOpFilter, err: Missing required argument: The argument "address" is required, but was not set.
2020/02/05 17:13:30 [ERROR] <root>: eval: *terraform.EvalSequence, err: Missing required argument: The argument "address" is required, but was not set.
Error: Missing required argument
The argument "address" is required, but was not set.
2020-02-05T17:13:30.041Z [DEBUG] plugin: plugin process exited: path=/home/.../terraform/vault-approle/.terraform/plugins/linux_amd64/terraform-provider-vault_v2.7.1_x4 pid=16788
2020-02-05T17:13:30.041Z [DEBUG] plugin: plugin exited
Expected Behavior
terraform validate should pass
Actual Behavior
terraform validate errors with
Error: Missing required argument
The argument "address" is required, but was not set.
Steps to Reproduce
terraform validate
About this issue
- Original URL
- State: closed
- Created 4 years ago
- Reactions: 14
- Comments: 16 (2 by maintainers)
I am not sure if this is a bug with how Terraform core handles provider required arguments. In any case, you can do the following:
VAULT_ADDR=https://example.com terraform validateit should work. It does not have to be a real Vault address.The fix is available in https://github.com/hashicorp/terraform-provider-vault/releases/tag/v3.23.0
I run the terraform validate on my configuration I get a success. but then when I run a plan it fails. something seems broken - and I’m passing my vault address into the provider block
I have seen this error occur when the vault provider is aliased and you declare a resource without specifying the provider.