【问题标题】:Use for_each to create multiple disks and their snapshots using a list input使用 for_each 使用列表输入创建多个磁盘及其快照
【发布时间】:2020-08-08 02:55:26
【问题描述】:

我正在编写 TF 代码以在 GCP 中创建多个磁盘。目的是有干代码并有一个列表作为输入。

我的 var app_disks 有以下定义

variable "app_disks" {
  type = list(object({
    name = string
    size = number
  }))
}

在我的 main.tf 中,我使用这样的变量

  app_disks = [
    {
      name = loki
      size = 200
    },
    {
      name = repo
      size = 100
    }
  ]

在我的模块中,我的 disk.tf 看起来像这样

locals {
  app_disk_map = {
    for disk in var.app_disks : "${disk.name}" => disk
  }
}

resource "google_compute_resource_policy" "app_disk_backup" {
  for_each = local.app_disk_map

  name   = "${each.value.name}-backup"

  snapshot_schedule_policy {
    schedule {
      hourly_schedule {
        hours_in_cycle = 8
        start_time     = "04:00"
      }
    }
    retention_policy {
      max_retention_days    = 14
      on_source_disk_delete = "APPLY_RETENTION_POLICY"
    }
  }
}

resource "google_compute_disk" "app_disk" {
  for_each = local.app_disk_map

  provider = google-beta

  name = each.value.name
  zone = "${var.region}-a"
  size = each.value.size

  resource_policies = [each.google_compute_resource_policy.app_disk_backup[${each.value.name}-backup].self_link]
}

我不确定如何将磁盘的resource_policies 链接到其相关的google_compute_resource_policy"

我试过这样的组合

each.google_compute_resource_policy.app_disk_backup[${each.value.name}-backup].self_link

each.google_compute_resource_policy.app_disk_backup."${each.value.name}-backup".self_link

但似乎没有一个有效

【问题讨论】:

  • 可以分享一下计划错误吗?

标签: terraform terraform-provider-gcp


【解决方案1】:

我不完全确定问题是否正确(因为缺少错误输出),但据我了解,您希望获得以下参考:google_compute_resource_policy.app_disk_backup[each.key].self_link,因此资源看起来像:

resource "google_compute_disk" "app_disk" {
  for_each = local.app_disk_map

....

  resource_policies = [google_compute_resource_policy.app_disk_backup[each.key].self_link]
}

这将引用用于创建依赖资源并在依赖项之间创建 1:1 映射的相同键。

【讨论】:

    猜你喜欢
    • 2021-11-14
    • 2018-02-21
    • 1970-01-01
    • 1970-01-01
    • 2017-07-08
    • 2020-02-17
    • 2020-06-28
    • 2019-04-06
    • 2021-08-30
    相关资源
    最近更新 更多