使用变量和字符串的值从地形数据源中提取



我正试图使用tf数据源从hashicorp vault中获取一些证书

这就是证书路径在保险库中的样子

serverA:
dev-cert: <base64 encoded cert>
qa-cert: <base64 encoded cert>
test-cert: <base64 encoded cert>

该证书用于其他资源块,如所示,工作正常

resource <somegcpresource> <xyz>
{
certificate = base64decode(data.vault_generic_secret.server_cryptoobjects.data["dev-cert"])
}
  1. 我可以使用自定义env变量来获取证书的值吗;

    certificate = base64decode(data.vault_generic_secret.server_cryptoobjects.data["var.env-cert"])

  2. 或本地var,以引用来自类似vault数据源的密钥名称;

    certificate = base64decode(data.vault_generic_secret.server_cryptoobjects.data[local.certname])

是的,data.vault_generic_secret.server_cryptoobjects.data是一个对象,因此您可以使用其相应的键访问其值。如果您声明一个变量env-cert:

variable "env-cert" {
type    = string
default = "dev-cert"
}

然后你可以用它作为密钥:

certificate = base64decode(data.vault_generic_secret.server_cryptoobjects.data["var.env-cert"])

是的,您也可以使用本地密钥:

locals {
certname = "dev-cert"
}
certificate = base64decode(data.vault_generic_secret.server_cryptoobjects.data[local.certname])

如果您还没有,我还建议您查看Vault PKI机密引擎以了解您的整体使用情况,因为问题中的此示例使用的是KV2机密引擎。

最新更新