Terraform中使用oci_dns_rrset创建多rdata DNS记录失败求助
解决Terraform OCI DNS RRSet多RData生成问题
要生成包含多个RData的DNS记录,你需要用Terraform的**动态块(dynamic block)**来遍历records数组,自动生成多个items嵌套块,而非手动写死单个条目。
修改后的oci_dns_rrset资源代码
resource "oci_dns_rrset" "records" { for_each = var.records zone_name_or_id = oci_dns_zone.zone.name domain = "${each.key}${var.zone}" rtype = try(each.value.type, "A") ttl = 60 # TTL可统一设置,也可放到动态块中单独定义 # 用动态块遍历records数组生成多个items条目 dynamic "items" { for_each = each.value.records iterator = rdata # 自定义迭代器名称,避免与外层each变量混淆 content { domain = "${each.key}${var.zone}" rdata = rdata.value # 取当前迭代的RData值 rtype = try(each.value.type, "A") } } }
关键说明
dynamic "items":告知Terraform需动态生成items类型的嵌套块for_each = each.value.records:指定遍历当前记录下的records数组iterator = rdata:自定义迭代器变量名,避免和外层var.records的each冲突,逻辑更清晰- 每个动态块的
content中,直接通过rdata.value获取当前循环的IP地址,自动为每个IP生成一条items条目
效果验证
以你定义的*.testRecord.记录为例,修改后会自动生成两个items块,分别对应1.2.3.4和1.2.3.7,最终在OCI DNS中生成一条包含两个A记录值的RRSet。
内容的提问来源于stack exchange,提问作者intu
相关产品推荐
相关产品推荐

