无法使用vault_secret_generic在Terraform中为提供程序加载密码

时间:2017-07-25 17:17:18

标签: openstack terraform hashicorp-vault

我有一个使用Openstack提供程序构建VM的terraform。提供程序的用户名和密码存储在Hashicorp Vault密钥中。我已经设置了启用vault提供程序并使用我的特权令牌访问密钥的计划。这就是我的计划:

provider "vault" {
}

data "vault_generic_secret" "openstack" {
  path = "secret/openstack"
}

provider "openstack" {
  user_name = "${data.vault_generic_secret.openstack.data["username"]}"
  password = "${data.vault_generic_secret.openstack.data["password"]}"
  tenant_name = "${var.openstack_tenant_name}"
  domain_id = "${var.openstack_domain_id}"
  auth_url = "${var.openstack_auth_url}"
}

当我尝试运行此计划时,我收到以下错误:

* provider.openstack: You must provide a password to authenticate

到目前为止,我已经能够通过将我的机密值显示为输出变量来验证vault提供程序和vault_generic_secret数据项是否在另一个计划中工作。另外,我知道openstack提供程序计划有效,因为我能够使用正确的值对user_name和密码进行硬编码,并且计划正常。

在我看来,即使data.vault_generic_secret.openstack顶点在我的provider.openstack顶点之前行走(在TF_LOG TRACE输出中验证了这一点),数据值也没有完全加载或可用于这点。我之所以这样想是因为当我测试时将密码/用户名字段留空时我看到了同样的错误。但是,如果我将用户名和密码设置为无效凭据,我会得到一个完全不同的错误,即无法对实际的openstack auth url进行身份验证。

* provider.openstack: Authentication failed

是否每个人都使用过保险库来加载秘密来配置他们的VM提供商?人们可能提供的任何输入都将是一个巨大的帮助。

Terraform v0.9.2

更新1:

我发现了一些似乎与我所遇到的相关的地形问题: https://github.com/hashicorp/terraform/issues/11264 https://github.com/hashicorp/terraform/issues/12393

根据第一个问题,当我尝试运行terraform plan -input=false时,它可以运行。

0 个答案:

没有答案