我试图理解为什么我的data来自我的gcs backend说它没有任何输出。
我有一个名为DB的模块,它创建一个postgres数据库。
我有一个名为outputs.tf的文件
terraform {
backend "gcs" {
bucket = "projectgun-terraform-state"
prefix = "db-workspaces"
}
}我正在使用一个名为a1的工作区
我运行terraform应用程序和中提琴,它成功了,我创建了一个DB。
此外,当我进入GCS时,我可以找到我的桶,找到我的钥匙。我的工作区名为a1,前缀为“db- workspace”,因此我的远程状态保存在#{ MY }/db-workspace/a1.tfstate中。
当我走到桶里的那把钥匙时,我看到一堆JSON,看起来像这样

如果我进入我的db模块,并执行terraform state pull,它看起来也是这样。一切都查清楚了。
但是当我进入我的另一个模块时,我试图访问来自GCS的输出,但我不能。
我正在使用模块a1。
data "terraform_remote_state" "db" {
backend = "gcs"
config = {
bucket = "projectgun-terraform-state"
prefix = "db-workspaces"
}
}当我试图通过输出访问这些数据时,我看到
79: db_user = data.terraform_remote_state.db.outputs.user
│ ├────────────────
│ │ data.terraform_remote_state.db.outputs is object with no attributes
│
│ This object does not have an attribute named "user".我做错了什么?是否有更好的方法来调试我的问题?当它试图提取数据时,我怎么能确定关键地形在看什么呢?
特指data.terraform_remote_state.db.outputs is object with no attributes
我可以调试data.terraform_remote_state吗?我怎么才能检查这里发生的事?当我查看远程状态时,有非常清楚的输出,所以我觉得它拿错了键,但不知道该在哪里查找。
发布于 2022-03-29 03:35:36
我发现了一个github问题,总结了我的问题和解决方案。
https://github.com/hashicorp/terraform/issues/24935
data "terraform_remote_state" "network" {
backend = "gcs"
workspace = terraform.workspace
config = {
bucket = "tf-state"
prefix = "base-layer/network/"
}
}这似乎不是一个记录在案的修复方法。谢谢你@HebertCL的回答!
https://stackoverflow.com/questions/71655832
复制相似问题