首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何引用Terrraform配置块或模块中的对象变量列表

如何引用Terrraform配置块或模块中的对象变量列表
EN

Stack Overflow用户
提问于 2021-05-25 11:41:53
回答 1查看 1.1K关注 0票数 0

如何引用terraform模块块中的对象变量列表

Variables.tf

代码语言:javascript
复制
variable "list_views_datasets" {
  description = "List of Views in the Datasets"
  type = list(object({
    dataset_id   = string
    dataset_name = string
    views = list(object({
      view_id        = string,
      query          = string,
      use_legacy_sql = bool,
      labels         = map(string),
    }))
  }))
  default = []
}

tfvars:

代码语言:javascript
复制
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

代码语言:javascript
复制
  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"
    }
  ]
}

现在我计划引用模块块中的变量,但我不确定我是否在mobule块

中相应地引用了视图、查询、标签值。

EN

回答 1

Stack Overflow用户

发布于 2021-05-26 00:16:01

遗憾的是,你不能这样做,。您必须将整个list_views_datasets作为一个变量传递到模块中,或者在模块级别使用for_each。在第二种情况下,您将创建多个模块。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67687214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档