【问题标题】:Terraform - Loop over a folder to create n indivual ressourcesTerraform - 遍历文件夹以创建单个资源
【发布时间】:2021-07-14 18:03:41
【问题描述】:

我有一个文件夹queries,用户将在其中添加、删除和修改yaml 文件。每个 yaml 文件代表 GCP 上的单个 terraform 资源,即调度查询

循环遍历查询文件夹并相应地在主main.tf 中生成适当数量的 terraform 资源的最干净的方法是什么?如果更简单,我可以使用 Python 生成main.tf

1 个signel 资源的示例:

queries/alpha.yaml

display_name: "my-query"
data_source_id: "scheduled_query"
schedule: "first sunday of quarter 00:00"
destination_dataset_id: "results"
destination_table_name_template: "my_table"
write_disposition: "WRITE_APPEND"
query: "SELECT name FROM tabl WHERE x = 'y'"

这应该在我的 ma​​in.tf

中创建这个资源
resource "google_bigquery_data_transfer_config" "query_config" {
  display_name           = "my-query"
  data_source_id         = "scheduled_query"
  schedule               = "first sunday of quarter 00:00"
  destination_dataset_id = "results"
  params = {
    destination_table_name_template = "my_table"
    write_disposition               = "WRITE_APPEND"
    query                           = "SELECT name FROM tabl WHERE x = 'y'"
  }
}

【问题讨论】:

  • 嗨,Marcin,我使用了您的代码,效果很好。我忘了接受你的回答,谢谢

标签: google-cloud-platform terraform


【解决方案1】:

您可以阅读locals中的所有文件:

locals {
  
   query_files = fileset(path.module, "queries/*.yaml")
   
   queries = {for query_file in local.query_files: 
              query_file => yamldecode(file(query_file))}
}

然后使用for_each 创建您的资源:

resource "google_bigquery_data_transfer_config" "query_config" {

  for_each               = local.queries

  display_name           = each.value.display_name
  data_source_id         = each.value.data_source_id
  schedule               = each.value.schedule
  destination_dataset_id = each.value.destination_dataset_id
  params = {
    destination_table_name_template = each.value.destination_table_name_template
    write_disposition               = each.value.write_disposition
    query                           = each.value.query
  }
}

【讨论】:

    猜你喜欢
    • 2021-09-08
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    • 1970-01-01
    • 2012-12-07
    • 2021-01-13
    • 1970-01-01
    • 2022-08-14
    相关资源
    最近更新 更多