小编Col*_*RiX的帖子

AWS上具有terraform的多个可用区域

我正在开发的VPC有3个逻辑层:Web,App和DB.对于每个层,每个可用区中都有一个子网.我正在使用的地区共有6个子网.

我正在尝试使用模块和count参数创建EC2实例,但我不知道如何告诉terraform使用App层的两个子网.我有一个额外的约束是使用静态IP地址(或具有确定性私有名称的方式)

我正在玩这个资源

resource "aws_instance" "app_server" {
  ...
  count = "${var.app_servers_count}"

  # Not all at the same time, though!
  availability_zone = ...
  subnet_id = ...
  private_ip = ...
}
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试/想过的事情:

  • 使用data "aws_subnet" "all_app_subnets" {...}按名称过滤,获取匹配的所有子网并将其用作列表.但aws_subnet不能退回清单;
  • 使用data "aws_availability_zones" {...}查找所有的区域.但我仍然有分配正确子网的问题;
  • 使用data "aws_subnet_ids" {...}看起来是最好的选择.但显然它没有匹配网络名称的过滤选项
  • 将子网ID作为字符串列表传递给模块.但我不想硬编码ID,它不是自动化;
  • 将子网硬编码为data "aws_subnet" "app_subnet_1" {...},data "aws_subnet" "app_subnet_2" {...}但是我必须为每个我不喜欢的子网使用单独的变量集;
  • 获取每个子网的信息,如上所述,然后创建一个map以列表形式访问它.但是在变量定义中使用插值是不可能的;
  • 不使用模块并为每个环境硬编码每个实例.嗯......真的吗?

我真的没想到了.似乎没有人必须在特定的子网中部署实例并保持良好的程度.我只看到未指定子网的示例或人们只使用默认值的示例.这真的很不寻常吗?

在此先感谢大家.

amazon-ec2 amazon-web-services availability-zone terraform

10
推荐指数
3
解决办法
7120
查看次数