首页 > 解决方案 > 无法将“google_dns_record_set”从 count 转换为 for_each

问题描述

尝试将我的模块升级到 Tf0.12 运行后terraform 0.12upgrade,现在无法转换countfor_each

带计数的原始模块

resource "google_dns_record_set" "default" {
  count        = length(var.account_fqdns)
  name         = "${element(var.account_fqdns, count.index)}."
  type         = "A"
  ttl          = 300
  managed_zone = var.dns_managed_zone
  project      = var.dns_project
  rrdatas      = [element(google_compute_address.default2.*.address, count.index)]

}

我的新模块

resource "google_dns_record_set" "default" {
  for_each     = {for fqdn in var.account_fqdns: fqdn => fqdn}
  name         = each.key
  type         = "A"
  ttl          = 300
  managed_zone = var.dns_managed_zone
  project      = var.dns_project
  rrdatas      = [google_compute_address.default2.*.address]
}

运行计划时,我不断遇到以下错误

Error: Incorrect attribute value type

  on main.tf line 285, in resource "google_dns_record_set" "default":
 285:   rrdatas      = [google_compute_address.default2.*.address]
    |----------------
    | google_compute_address.default2 is object with 3 attributes

Inappropriate value for attribute "rrdatas": element 0: string required.


Error: Unsupported attribute

  on main.tf line 285, in resource "google_dns_record_set" "default":
 285:   rrdatas      = [google_compute_address.default2.*.address]

This object does not have an attribute named "address".

标签: google-cloud-platformterraform-provider-gcpterraform0.12+

解决方案


我可以通过在下面执行此操作来解决我的问题

rrdatas      = [for ip in google_compute_address.default2: ip.address]

推荐阅读