преобразовать карту в список для terraform aws_autoscaling_group - PullRequest
0 голосов
/ 15 января 2019

У меня есть следующая карта идентификаторов подсетей в качестве переменной для использования в ресурсе Terraform aws_autoscaling_group:

subnet_ids = {
  "us-east-1" = "subnet-123abc,subnet-456def,subnet-789ghi"
  "us-west-2" = "subnet-1a2b3c,subnet-4c5d6e,subnet-7g8h9i"
}

и переменная как

variable subnet_ids {
  description = "subnet ids"
  type        = "map"
}

но это не работает, так как Terraform жалуется, что ему нужен список, но видит карту.

Это сработало, только временно установив один регион:

subnet_ids = ["subnet-123abc", "subnet-456def", "subnet-789ghi"]

и переменная как:

variable subnet_ids {
  description = "subnet ids"
  type        = "list"
}

и передается как vpc_zone_identifier = "${var.subnet_ids}"

Так что очень хочется иметь возможность использовать карту и передавать списки, основанные на выбранном регионе

Спасибо

Ответы [ 3 ]

0 голосов
/ 17 января 2019

Для тех, кто сталкивается с проблемами с security groups для автоматического масштабирования группового ресурса в terraform, это то, как вы передаете карту в список

, это то, что сработало

security_groups = ["${split(",",lookup(var.security_groups, var.aws_region))}"]
0 голосов
/ 14 апреля 2019

Или ...

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

...

vpc_zone_identifier = ["${var.subnet_ids["${var.region}"]}"]
0 голосов
/ 15 января 2019

Попробуйте использовать команду lookup и переменную для представления region, чтобы выбрать значение из вашего map:

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

...

vpc_zone_identifier = ["${lookup(var.subnet_ids, var.region)}"]

См. Документацию для дополнительных примеров.

...