J'ai la carte suivante des identifiants de sous-réseau comme variable à utiliser dans une ressource Terraform aws_autoscaling_group
:
variable subnet_ids { description = "subnet ids" type = "list" }
et variable comme
subnet_ids = ["subnet-123abc", "subnet-456def", "subnet-789ghi"]
mais cela ne fonctionne pas car Terraform se plaint qu'il a besoin d'une liste mais voit une carte.
Cela a fonctionné en configurant simplement une région temporairement:
XXX
et variable comme:
variable subnet_ids { description = "subnet ids" type = "map" }
et passé comme vpc_zone_identifier = "$ {var.subnet_ids}"
Je veux vraiment un moyen de pouvoir utiliser la carte et de pouvoir passer des listes en fonction de la région choisie
Merci
3 Réponses :
Essayez d'utiliser la commande lookup
et une variable pour représenter votre région
pour choisir une valeur dans votre carte
:
variable region { description = "aws region" default = "us-east-1" } ... vpc_zone_identifier = ["${lookup(var.subnet_ids, var.region)}"]
ne fonctionne toujours pas vpc_zone_identifier: devrait être une liste
variable subnet_ids devrait être une liste de type, obtenu une carte
J'ai essayé cela avant de publier cette question et je n'ai pas fonctionné et j'ai simplement essayé votre réponse à nouveau ... même erreur
Essayez d'utiliser des crochets comme ceci: vpc_zone_identifier = ["$ {lookup (var.subnet_ids, var.region)}"]
ça marche?
vous savez pourquoi terraform continue d'utiliser le VPC par défaut au lieu du VPC avec les sous-réseaux que j'ai passés? aucune option pour spécifier l'ID du VPC lui-même
essayé d'appliquer la même chose à security_groups pour la configuration de lancement et je suis en train de rencontrer ce github.com / hashicorp / terraform / issues /… est bloqué maintenant .. je ne sais pas comment passer les groupes de sécurité à partir de la carte
Pas trop sûr - vous souhaitez poser une nouvelle question pour obtenir de l'aide?
c'est exactement la même chose que le sous-réseau mais pour les groupes de sécurité ... je le ferai si c'est ce qui est nécessaire
Pour toute personne confrontée à des problèmes avec les groupes de sécurité
pour l'autoscaling des ressources de groupe dans terraform, voici comment vous passez la carte à la liste
voici ce qui a fonctionné
security_groups = ["${split(",",lookup(var.security_groups, var.aws_region))}"]
Ou ...
variable region { description = "aws region" default = "us-east-1" } ... vpc_zone_identifier = ["${var.subnet_ids["${var.region}"]}"]