[英]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 的a
或b
字符添加到它,如下所示:
data "aws_region" "current" {}
locals {
az1 = "${data.aws_region.current.name}a"
az2 = "${data.aws_region.current.name}b"
}
接受的答案是所提出問題的一個很好的答案。 我寫這個答案是為了展示一個替代方案,它不能直接解決所提出的問題,但會在您可以訪問a
和b
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
數據源查找您的賬戶在當前區域中可以訪問的所有區域,然后按詞法對它們進行排序,以便它們處於可預測的順序,最后從該排序列表中獲取前兩項。 假設您可以訪問a
和b
區域,這將始終選擇這兩個區域,因為(根據當前的 AZ 命名方案)它們將始終在列表中排在第一位。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.