转换Openstack v2 DNS记录以使用Terraform获取FQDN

时间:2019-04-16 12:17:12

标签: terraform openstack

在使用openstack_v2提供程序的Terraform中,处理dns记录确实很复杂,因为dns记录具有尾随点,并且无法通过Terraform(0.11)轻松处理这些情况。

查看第一条评论。起初我没有指定fqdn可以在几乎所有地方都与尾随点一起使用:浏览器,终端,ansible ...这种用例是当尾随点引起问题时。例如,在无法正确处理fqdn ...

的系统中

以下是dns记录的示例:

module.runners.openstack_dns_recordset_v2.dns-record.0:
  id = b84346ec-240b-4517-8da5-0715ed196bc2/234acad2-909a-490c-8aec-b9655fa4bc41
  description = 
  name = runner-1.dns-zone.domain.net.
  records.# = 1
  records.0 = 192.168.0.57
  region = RegionOne
  ttl = 3000
  type = A
  zone_id = b84346ec-240b-4517-8da5-0715ed196bc2

Terraform不提供任何转换列表中字符串的方法。我该怎么办?

1 个答案:

答案 0 :(得分:0)

解决方案是使用可以带有计数值的data_null_source。 count变量是将字符串转换应用于列表值的唯一方法。

这是处理此用例的代码示例。它将删除每个dns记录名称的最后一个字符,从而使我们能够使用FQDN,而无需稍后使用尾随点。

data "null_data_source" "fqdns" {
  count = "${var.instance_count}"
  inputs = {
    dns = "${substr(element(openstack_dns_recordset_v2.dns-record.*.name, count.index),0,length(element(openstack_dns_recordset_v2.dns-record.*.name, count.index))-1)}"
  }
}

output "fqdns" {
  value = ["${data.null_data_source.fqdns.*.outputs.dns}"]
}

现在我们可以使用fqdns对象。是的!