1
votes

convertir la carte en liste pour terraform aws_autoscaling_group

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


0 commentaires

3 Réponses :


1
votes

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)}"]


7 commentaires

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



1
votes

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))}"]


0 commentaires

0
votes

Ou ...

variable region {
   description = "aws region"
   default = "us-east-1"
}

...

vpc_zone_identifier = ["${var.subnet_ids["${var.region}"]}"]


0 commentaires