我正在开发的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" {...}看起来是最好的选择.但显然它没有匹配网络名称的过滤选项data "aws_subnet" "app_subnet_1" {...},data "aws_subnet" "app_subnet_2" {...}但是我必须为每个我不喜欢的子网使用单独的变量集;map以列表形式访问它.但是在变量定义中使用插值是不可能的;我真的没想到了.似乎没有人必须在特定的子网中部署实例并保持良好的程度.我只看到未指定子网的示例或人们只使用默认值的示例.这真的很不寻常吗?
在此先感谢大家.