Im essayant de itérer via une carte de type variable et je ne sais pas comment
C'est ce que j'ai jusqu'à présent
Dans ma principale.tf:
resource "aws_route_53_record" "proxy_dns" {
count = "${length(var.account_name)}"
zone_id = "${infrastructure.zone_id}"
name = "proxy-${element(split(",", var.account_name), count.index)}-dns
type = CNAME
ttl = 60
records = ["{records.dns_name}"]
}
Et dans mes variables.tf
variable "account_name" {
type = "map"
default = {
"account1" = "accountA"
"account2" = "accountB"
}
}
Je veux pouvoir créer plusieurs ressources avec les différents noms de compte
Si vous utilisez Terraform 0.12.6 ou plus tard, vous pouvez utiliser for_each
Au lieu de count
pour produire une instance pour chaque élément de votre carte:
resource "aws_route53_record" "proxy_dns" {
for_each = var.account_name
zone_id = infrastructure.zone_id
name = "proxy-${each.value}-dns"
# ... etc ...
}
L'avantage principal de for_each
Over count
est que Terraform identifiera les instances de la clé de la carte, de sorte que vous obtiendrez des cas comme aws_route53_record.proxy_dns["account1"]
à la place de aws_route53_record.proxy_dns[0]
, et vous pouvez ainsi ajouter et supprimer des éléments de votre carte à l'avenir avec Terraform Sachez quelle instance spécifique appartient à chaque élément.
each.key
et each.value
dans les arguments de type de ressource remplacer count.index
lorsque for_each
est utilisé. Ils évaluent respectivement la clé et la valeur de l'élément de carte actuel.
Peux-tu essayer:
resource "aws_route_53_record" "proxy_dns" {
count = "${length(var.account_name)}"
name = "proxy-${var.account_name[count.index]}-dns
}