मुझे उनके सम्मानित आईपी के साथ कई डीएनएस बनाने की जरूरत है। मुझे पहले आईपी को पहले डीएनएस और दूसरे से दूसरे डीएनएस को असाइन करने की आवश्यकता है। dns1 - 10.1.20.70 और dns2-10.1.20.40 जैसा कुछ। लेकिन दोनों IP प्राप्त करना DNS (dns1 और dns2) दोनों के लिए असाइन किया जा रहा है। कोई सुझाव?
कोड:
resource "aws_route53_record" "onprem_api_record" {
for_each = toset(local.vm_fqdn)
zone_id = data.aws_route53_zone.dns_zone.zone_id
name = each.value
type = "A"
records = var.api_ips[terraform.workspace]
ttl = "300"
}
locals {
vm_fqdn = flatten(["dns1-${terraform.workspace}.${local.domain}", "dns2-${terraform.workspace}.${local.domain}"] )
}
variable "api_ips" {
type = map(list(string))
default = {
"dev" = [ "10.1.20.70", "10.1.20.140" ]
"qa" = [ "10.1.22.180", "10.1.22.150" ]
"test" = [ "10.1.23.190", "10.1.23.160" ]
}
}
उत्पादन
+ resource "aws_route53_record" "onprem_api_record" {
+ allow_overwrite = (known after apply)
+ fqdn = (known after apply)
+ id = (known after apply)
+ name = "dns1.dev.ciscodcloud.com"
+ records = [
+ "10.1.20.40",
+ "10.1.20.70",
]
+ ttl = 300
+ type = "A"
+ zone_id = "Z30HW9VL6PYDXQ"
}
aws_route53_record.onprem_api_record["dna2.dev.cisco.com"] will be created
+ resource "aws_route53_record" "onprem_api_record" {
+ allow_overwrite = (known after apply)
+ fqdn = (known after apply)
+ id = (known after apply)
+ name = "dns2.dev.cisco.com"
+ records = [
+ "10.1.20.40",
+ "10.1.20.70",
]
+ ttl = 300
+ type = "A"
+ zone_id = "Z30HW9VL6PYDXQ"
}
Plan: 2 to add, 0 to change, 1 to destroy.
2 जवाब
आप zipmap का उपयोग करना चाह सकते हैं। यहाँ एक संक्षिप्त उदाहरण है जो for_each
में for
के साथ इसका उपयोग दिखा रहा है जैसा कि आपके मामले में किया जा सकता है।
resource "aws_route53_record" "onprem_api_record" {
for_each = { for fqdn, ip in zipmap(local.vm_fqdn, local.ips["dev"]) : fqdn => ip }
zone_id = "x"
name = each.key
type = "A"
records = [each.value]
ttl = "300"
}
locals {
ips = {
"dev" = ["10.1.20.70", "10.1.20.140"]
"qa" = ["10.1.22.180", "10.1.22.150"]
"test" = ["10.1.23.190", "10.1.23.160"]
}
vm_fqdn = ["dns1-dev.domain", "dns2-dev.domain"]
}
और योजना इस तरह दिखती है:
# aws_route53_record.onprem_api_record["dns1-dev.domain"] will be created
+ resource "aws_route53_record" "onprem_api_record" {
+ allow_overwrite = (known after apply)
+ fqdn = (known after apply)
+ id = (known after apply)
+ name = "dns1-dev.domain"
+ records = [
+ "10.1.20.70",
]
+ ttl = 300
+ type = "A"
+ zone_id = "x"
}
# aws_route53_record.onprem_api_record["dns2-dev.domain"] will be created
+ resource "aws_route53_record" "onprem_api_record" {
+ allow_overwrite = (known after apply)
+ fqdn = (known after apply)
+ id = (known after apply)
+ name = "dns2-dev.domain"
+ records = [
+ "10.1.20.140",
]
+ ttl = 300
+ type = "A"
+ zone_id = "x"
}
Plan: 2 to add, 0 to change, 0 to destroy.
आप इसे count
के साथ इस प्रकार कर सकते हैं:
resource "aws_route53_record" "onprem_api_record" {
count = length(local.vm_fqdn)
zone_id = data.aws_route53_zone.dns_zone.zone_id
name = local.vm_fqdn[count.index]
type = "A"
records = [var.api_ips[terraform.workspace][count.index]]
ttl = "300"
}
for_each
के साथ जाना पसंद करते हैं। टी
संबंधित सवाल
नए सवाल
amazon-web-services
Amazon Web Services (AWS) एक सार्वजनिक-क्लाउड है: IaaS (एक सेवा के रूप में अवसंरचना) और अमेज़न द्वारा उपलब्ध कराए गए SaaS (एक सेवा के रूप में सॉफ़्टवेयर)। प्रोग्रामिंग और आर्किटेक्चर के बारे में प्रश्न विषय पर हैं। Https://serverfault.com पर सामान्य सर्वर सहायता प्राप्त की जा सकती है। AWS टैग का उपयोग शायद ही कभी किया जाता है और आमतौर पर अन्य टैग के साथ प्रश्न के विषय को अधिक स्पष्ट रूप से परिभाषित करने के लिए उपयोग किया जाएगा।