簡體   English   中英

Terraform - 在任何地區的特定可用區啟動

[英]Terraform - Launch in specific availability zones in any region

我希望在我指定的任何區域的“a”或“b”可用區中啟動一個子網 - 有沒有辦法讓 terraform 做到這一點?

類似這樣的東西:

variable "az" {
  default = {
    a = 1
    b = 2
  }
}

resource "aws_subnet" "example" {
  vpc_id = aws_vpc.vpc.id
  availability_zone = var.az.(places subnets in either of the specified AZs)
}

您可以簡單地將當前區域名稱和 append 的ab字符添加到它,如下所示:

data "aws_region" "current" {}

locals {
 az1 = "${data.aws_region.current.name}a"
 az2 = "${data.aws_region.current.name}b"
}

接受的答案是所提出問題的一個很好的答案。 我寫這個答案是為了展示一個替代方案,它不能直接解決所提出的問題,但會在您可以訪問ab AZs 的任何區域獲得等效結果:

data "aws_availability_zones" "all" {
}

locals {
  sorted_availability_zones   = sort(data.aws_availability_zones.all.names)
  selected_availability_zones = toset([
    local.sorted_availability_zones[0],
    local.sorted_availability_zones[1],
  ])
}

resource "aws_subnet" "example" {
  for_each = local.selected_availability_zones

  vpc_id            = aws_vpc.vpc.id
  availability_zone = each.value
}

以上使用aws_availability_zones數據源查找您的賬戶在當前區域中可以訪問的所有區域,然后按詞法對它們進行排序,以便它們處於可預測的順序,最后從該排序列表中獲取前兩項。 假設您可以訪問ab區域,這將始終選擇這兩個區域,因為(根據當前的 AZ 命名方案)它們將始終在列表中排在第一位。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM