首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将创建的子网转换为地图数据,供后续代码使用?

如何将创建的子网转换为地图数据,供后续代码使用?
EN

Stack Overflow用户
提问于 2020-07-29 18:47:09
回答 1查看 23关注 0票数 0

首先,我创建了3个子网,我想将它们转换成地图形式,以便查找后面的代码。例如:

代码语言:javascript
复制
[0 = "${aws_subnet.subnet-1.id}" 
1 = "${aws_subnet.subnet-2.id}" 
2 = "${aws_subnet.subnet -3.id}"]
代码语言:javascript
复制
resource "aws_vpc" "module_vpc" {
  cidr_block       = "10.0.0.0/16"
  instance_tenancy = "default"
}

resource "aws_subnet" "subnet-1" {
  vpc_id     = "${aws_vpc.module_vpc.id}"
  cidr_block = "10.0.1.0/24"
}

resource "aws_subnet" "subnet-2" {
  vpc_id     = "${aws_vpc.module_vpc.id}"
  cidr_block = "10.0.2.0/24"
}

resource "aws_subnet" "subnet-3" {
  vpc_id     = "${aws_vpc.module_vpc.id}"
  cidr_block = "10.0.3.0/24"
}

以下是使用查找的代码

代码语言:javascript
复制
resource "aws_instance" "server" {
    count = 3
    subnet_id = "${lookup(var.subnets, count.index % 3)}"

}

我该怎么做?谢谢大家

EN

回答 1

Stack Overflow用户

发布于 2020-07-29 20:32:17

基于list的可扩展性更强的另一种方式如何:

代码语言:javascript
复制
variable "subnet_cidrs" {
    default = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"]
}

resource "aws_vpc" "module_vpc" {
  cidr_block       = "10.0.0.0/16"
  instance_tenancy = "default"
}

resource "aws_subnet" "subnet" {
  count      = length(var.subnet_cidrs)
  vpc_id     = aws_vpc.module_vpc.id
  cidr_block = element(var.subnet_cidrs, count.index)
}

resource "aws_instance" "server" {
    count = 3    
    subnet_id = element(aws_subnet.subnet.*.id, count.index) # modulo is automatically applied
}

我假设terraform 0.12,因为您没有指定任何其他版本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63151894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档