Как найти имя зоны доступности из идентификатора зоны доступности? - PullRequest
0 голосов
/ 16 апреля 2019

В некоторых местах моего tf-файла я предоставляю availability_zone_id. Э.Г.

variable "az_id" { }

resource "aws_subnet" "main" {
  vpc_id     = "${aws_vpc.main.id}"
  cidr_block = "${var.subnet_cidr_block}"
  availability_zone_id = "${var.az_id}"
  map_public_ip_on_launch = true
}

... и в файле my.tfvars:

az_id              = "euw2-az1"

В других местах мне нужно указать имя availablity_zone. Э.Г.

resource "aws_ebs_volume" "controller-ebs-sdb" { 
  availability_zone = "${var.az}"  
  size              = 1024 
  type              = "gp2"
}         

Есть ли в terraform способ поиска имени зоны доступности по идентификатору зоны доступности?

Ответы [ 2 ]

0 голосов
/ 27 апреля 2019

Другой способ - получить зоны доступности, которые поддерживаются в этом регионе, а затем использовать индекс.Тогда может этот индекс.

Пример:

data "aws_availability_zones" "available_az" {}

Затем на вашем ресурсе используйте следующее с индексом.Если вы хотите использовать свой первый AZ, используйте индекс 0. Если вы хотите использовать свой второй AZ, используйте индекс 1.

Availability_zone = "$ {element (data.aws_availability_zones.available_az.names, 0)}«

0 голосов
/ 17 апреля 2019

Я исправил это, создав переменную az и удалив az_id

az = "eu-west-2a"

... и добавление элемента данных

data "aws_availability_zone" "main" {
  name = "${var.az}"
}

resource "aws_subnet" "main" {                                          
  ...                          
  availability_zone_id = "${data.aws_availability_zone.main.zone_id}"   
  ...                                                                                                       
}  

resource "aws_ebs_volume" "controller-ebs-sdb" {
  availability_zone = "${var.az}"
  ...
}
...