我正在尝试使用变量(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
如我所见,我无法在数据中添加变量。在这种情况下,我们有什么解决方法吗?谢谢
答案 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)