首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用terraform aws vpc模块限制AZs aws_availability_zones

使用terraform aws vpc模块限制AZs aws_availability_zones
EN

Stack Overflow用户
提问于 2022-10-12 05:50:58
回答 1查看 75关注 0票数 0
代码语言:javascript
复制
CIDR = 10.50.0.0/16

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


data "aws_availability_zones" "available" {}

美东一号有6个阿兹。

代码语言:javascript
复制
["us-east-1a", "us-east-1b", "us-east-1c", "us-east-1d", "us-east-1e", "us-east-1f"]

我想要创建每个AZ配置的一个公共子网和一个私有子网。

我有3个环境(开发/阶段/项目)

  1. dev env,我想在3个可用性区域(

)上创建子网。

  1. stage env,关于4个可用性区域

  1. 在所有可用区域上发布了env。对此,美东-1地区有6 availability_zones.

local.tf

代码语言:javascript
复制
locals {
  selected_azs = map(data.avaialbility_zones.name[3])
}

vpc.tf

代码语言:javascript
复制
module "vpc" {
  source                 = "terraform-aws-modules/vpc/aws"
  name                   = var.vpc_name
  cidr                   = var.vpc_cidr
  azs                    = data.aws_availability_zones.available.names
  private_subnets        = var.ath_private_subnet_block
  public_subnets         = var.ath_public_subnet_block
  enable_nat_gateway     = local.natgw_states[var.natgw_configuration].enable_nat_gateway
  single_nat_gateway     = local.natgw_states[var.natgw_configuration].single_nat_gateway
  one_nat_gateway_per_az = local.natgw_states[var.natgw_configuration].one_nat_gateway_per_az
  tags                   = var.resource_tags
}

variable.tf

代码语言:javascript
复制
variable "az_throttle_limit" {
  type        = number
  default     = 0
  description = "number of AZs to limit to, 0 for all"
}

关于读取可用性区域的任何建议,我如何从本地状态控制.

默认值将为当前区域上的所有可用性区域创建子网。

摘要:

  • 目标AZs:所有“选择不需要”的AZs。

(美-东-1a,美-东-1b,美-东-1c,美-东-1D,美-东-1-e,美-东-1-1 f)

  • AZ不应该是静态列表,应该自动从aws

获得

  • Configurable:限制AZs使用的资源(特别是在非生产environment)

中)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-12 07:32:21

您可以有一个名为env的新变量,每个env都有不同的AZs局部变量。

代码语言:javascript
复制
variable "env" {
  type = string
  default = "dev"
}


locals {
  selected_azs = {
    "dev" = [for i in range(3): data.aws_availability_zones.available.names[i]]
    "stage" = [for i in range(4): data.aws_availability_zones.available.names[i]]
   "prod" = data.aws_availability_zones.available.names
  }
}

然后使用它:

代码语言:javascript
复制
azs   = locals.selected_azs[var.env]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74037034

复制
相关文章

相似问题

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