我使用下面的资源块创建了两个子网。
this.todosRef.on('child_removed', snapshot => {
const removedTodo = {
key: snapshot.key,
value: snapshot.val()
}
const index = this.state.todos.indexOf(removedTodo);
let todos = this.state.todos.splice(index, removedTodo);
todos.splice(index, 1);
this.setState({
todos: todos
});
});
之后,我创建了eip,nat,私有路由表,将路由添加到私有路由表,最后,当我尝试将私有路由表与private *子网关联时,terraform部分起作用,即,在4个子网中只有2个私有子网与私有路由表关联。
resource "aws_subnet" "private" {
count = "${length(var.private_subnet)}"
vpc_id = "${aws_vpc.vpcname.id}"
cidr_block = "${var.private_subnet[count.index]}"
availability_zone = "${data.aws_availability_zones.available.names[count.index]}"
map_public_ip_on_launch = false
tags {
Name = "${var.private}-${format("%01d", count.index + 1)}"
Environment = "${terraform.workspace}"
}
}
要将该关联应用于所有专用子网,我需要更改什么。
resource "aws_route_table_association" "private-subnet-association" {
subnet_id = "${element(aws_subnet.private.*.id, count.index)}"
route_table_id = "${aws_vpc.vpcname.private_route_table.id}"
}
答案 0 :(得分:2)
变量nat_gateway_eip
来自哪里?您需要使用完整资源以TYPE.NAME.ATTR
它应该看起来像这样……${element(aws_eip.RESOURCE_NAME.*.id, count.index)}
或者,您需要使正在创建nat_gateway
的模块/文件输出eip_id
值并从远程状态引用它。
编辑:随着问题的变化,更新答案。
您需要创建多个关联才能将此路由表关联到不同的子网。
您当前的子网关联块未进行任何迭代。语法RESOURCE.NAME.*.ATTR
并不表示“通配符”,它用于包含count
的资源。