我想使用API从第三方服务器获取密码,然后将其分配给参数store:
最初我认为我可以使用$TF_VAR_password作为桥梁来实现:
步骤1:创建.env文件:
cat test.env
export TF_VAR_password=< 3rd party API to get the password, say 123456 >
步骤2:使用Terraform null_resource执行测试。导出TF_VAR_password:
resource "null_resource" "get_password" {
triggers = {
always_run = "${timestamp()}"
}
provisioner "local-exec" {
command = "source ./${path.module}/test.env"
}
}
步骤3:将TF_VAR_password(即var.password)赋值给参数store:
resource "aws_ssm_parameter" "abc" {
value = var.password <---------
...
}
当我运行上面的Terraform时,它显示:执行("/bin:/sh"-c"源 ./../../../../aws/模块/test.env"]
但是当我运行echo $TF_VAR_password
时,它没有显示$TF_VAR_password为123456。
如果我直接运行source ./../../../../aws/modules/test.env
,我看到$TF_VAR_password变成123456,这意味着脚本本身是正确的。
如何从第三方服务器获取并分配参数存储的密码?
HashiCorp有专用的数据源称为外部,这将允许您调用您的API,获取密码,然后返回到您的TF脚本供以后使用。
这将要求您以JSON形式返回结果,如文档中所示。