使用 Terraform 转换 Openstack v2 DNS 记录以获取 FQDN
Transform Openstack v2 DNS record to get FQDN with Terraform
在使用 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 不提供任何方式来转换列表中的字符串。我该怎么做?
解决方法是使用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 对象了。耶!
在使用 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 不提供任何方式来转换列表中的字符串。我该怎么做?
解决方法是使用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 对象了。耶!