Terraform 如何引用Terrraform配置块或模块中的对象变量列表
如何在terraform模块块中引用对象变量列表 变量.tf TFVAR:Terraform 如何引用Terrraform配置块或模块中的对象变量列表,terraform,terraform-provider-gcp,Terraform,Terraform Provider Gcp,如何在terraform模块块中引用对象变量列表 变量.tf TFVAR: list_views_datasets = [ { dataset_id = "testservice" dataset_name = "testservice" views = [ { view_id = "issue-data",
list_views_datasets = [
{
dataset_id = "testservice"
dataset_name = "testservice"
views = [
{
view_id = "issue-data",
use_legacy_sql = false,
query = ".test.sql"
# unfortunately we have to repeat the project id, dataset id and table id in here.
labels = {
env = "dev"
billable = "true"
owner = "dev"
}
},
]
},
Main.tf
现在我计划引用模块块中的变量,但我不确定是否正确引用了视图、查询、,
“我的移动块”中的标签值
遗憾的是,你不能这样做。您必须将整个
列表视图\u数据集作为一个变量传递到您的模块中,或者在模块级别为每个数据集使用。在第二种情况下,您将创建多个模块。哪些行会抛出什么错误?这些声明附在什么文件中?在其当前形式中,它们没有多大意义,因为现在每个
的描述和都处于同一级别。@luk2302-description是variables.tf中定义的变量。foreach块在我的配置文件中定义。因为在一个变量中,我们定义了对象的嵌套列表。我不知道如何在配置文件中将其作为键值对引用
list_views_datasets = [
{
dataset_id = "testservice"
dataset_name = "testservice"
views = [
{
view_id = "issue-data",
use_legacy_sql = false,
query = ".test.sql"
# unfortunately we have to repeat the project id, dataset id and table id in here.
labels = {
env = "dev"
billable = "true"
owner = "dev"
}
},
]
},
module "bigquery_views" {
source = "terraform-google-modules/bigquery/google"
version = "4.3.0"
depends_on = [module.bigquery]
for_each = { for list_view in var.list_views_datasets : list_view.dataset_id => list_view }
dataset_id = each.value.dataset_id
dataset_name = each.value.dataset_name
description = var.views_description
project_id = var.project_id
location = var.location
views = {
view_id = each.value.views[view_id]
labels = each.value.views[labels]
query = file(each.value.views[query])
use_legacy_sql = each.value.views[use_legacy_sql]
}
dataset_labels = var.dataset_labels
access = [
{
role = "roles/bigquery.dataOwner"
special_group = "projectOwners"
}
]
}