我有一个本地文件(命名为x.json)包含一些json内容。像
{
"client": {
"apiKey": "xyzabcpqr!23",
"permissions": {},
"firebaseSubdomain": "my-project-1"
}
}
我在这个文件上做数据源,比如
data "local_file" "myfile" {
filename = "x.json" #localfile
}
现在我想提取apiKey
作为地形,并将输出传递给其他资源。
output "apiKey" {
value = data.local_file.myfile.content
}
但是我没有找到任何选项来获得它。
我也试过这个,但它抛出的错误为
不能访问基本类型值(字符串)上的属性。
output "apiKey" {
value = data.local_file.myfile.content.client.apiKey
}
假设你有这个:
data "local_file" "myfile" {
filename = "x.json"
}
您可以通过解析为JSON(作为文本读取)来访问特定的值。
output "apiKey" {
value = jsondecode(data.local_file.myfile.content).apiKey
}
作为旁注,鉴于这是一个敏感文件,我建议使用local_sensitive_file
代替。local_file
希望能帮到你。
除了使用本地文件输出,你还可以将你的配置作为变量传递。
对于每个Terraform
模块,在规划和应用之前,将客户端配置设置为变量:
export TF_VAR_client='{"apiKey": "xyzabcpqr!23","permissions": {},"firebaseSubdomain": "my-project-1"}'
或
terraform apply -var='apiKey={"apiKey": "xyzabcpqr!23","permissions": {},"firebaseSubdomain": "my-project-1"}'
然后在Terraform
代码中:
variables.tf
file
variable "client" {
description = "Client"
type = "map"
}
main.tf
file
resource "your_resource" "name" {
apikey = var.client["apiKey"]
....