Я пишу код TF для создания нескольких дисков в GCP. Цель состоит в том, чтобы иметь код dry и иметь список в качестве входных данных.
Мой 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
Но, похоже, ни одна из них не работает