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

  1. terraform validate

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Reactions: 14
  • Comments: 16 (2 by maintainers)

Most upvoted comments

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:

  • If you do VAULT_ADDR=https://example.com terraform validate it should work. It does not have to be a real Vault address.
  • Please report this bug to Terraform core.

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.