向数据添加变量

时间:2019-06-16 13:49:02

标签: terraform terraform-provider-aws

我正在尝试使用变量(Terraform v0.12.0)连接数据:

variable "my_var" {
    default = "secret_string"
}

auth_token = data.external.get_secret.result.var.my_var 

在以下情况下有效:

auth_token = data.external.get_secret.result.secret_string

如我所见,我无法在数据中添加变量。在这种情况下,我们有什么解决方法吗?谢谢

1 个答案:

答案 0 :(得分:0)

不清楚您需要什么。我猜吧。

您可以有不同的端点来保存您的机密,例如hashicorp保险库,aws ssm,aws机密管理器,通过这些方式,您可以避免直接在源代码中保存机密。

在这里,我使用aws ssm for an example来说明如何通过变量引用秘密。

假设您在aws中设置了SSM密钥my_var

variable "my_var" {
    default = "my_var"
}


data "aws_ssm_parameter" "read" {
  name  = "${var.my_var}"
}

所以现在您可以轻松地引用它

auth_token             = "${aws_ssm_parameter.read.value}"
  

注意:SecureString的未加密值将以原始状态存储为纯文本。

     

注意:数据源当前正在遵循SSM API的行为以返回字符串值,而与参数类型无关。对于StringList类型,我们可以使用内置的split()函数来获取列表中的值。示例:split(“,”,data.aws_ssm_parameter.subnets.value)