将地图转换为terraform aws_autoscaling_group的列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将地图转换为terraform aws_autoscaling_group的列表相关的知识,希望对你有一定的参考价值。

我有以下子网ID映射作为在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}"传递

所以非常想要一种方法来使用地图并能够根据所挑选的区域传入列表

谢谢

答案

尝试使用lookup命令和变量来表示你的regionmap中选择一个值:

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

...

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

See the documentation for more examples.

另一答案

对于任何因使用security groups在terraform中自动调整组资源而遇到问题的人来说,这就是你将地图传递给列表的方法

这是有效的

security_groups = ["${split(",",lookup(var.security_groups, var.aws_region))}"]
另一答案

要么...

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

...

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

以上是关于将地图转换为terraform aws_autoscaling_group的列表的主要内容,如果未能解决你的问题,请参考以下文章

将 ARM 模板转换为 Terraform [关闭]

将 Terraform 模板转换为 Cloudformation 模板

无法使用“terraform init -reconfigure”将 S3 后端中的 Terraform 远程状态转换为本地状态

将 terraform HCL 变量 type=map(any) 转换为 JSON

Terraform - 创建 EBS 的快照,然后将快照转换为 EBS 并附加到 EC2

Terraform - 迭代嵌套地图