В Terraform есть 2 основных способа передачи результатов.
Первый и самый старый способ - использовать функцию удаленного состояния для получения выходных данных в другом файле состояния.
Второй, более новый подход заключается в использовании источников данных вашего провайдера, которые раскрывают запрос только для чтения к вашему провайдеру для получения информации о ресурсе.
При этом вы должны использовать aws_vpc
и _ 2_ источников данных для получения информации о соответствующих идентификаторах подсети.
Пример может выглядеть примерно так, как указано в aws_subnet_ids
документах:
variable "vpc" {}
variable "ami" {}
data "aws_vpc" "selected" {
tags {
Name = "${var.vpc}"
}
}
data "aws_subnet_ids" "private" {
vpc_id = "${data.aws_vpc.selected.id}"
tags {
Tier = "Private"
}
}
resource "aws_instance" "app" {
count = "3"
ami = "${var.ami}"
instance_type = "t2.micro"
subnet_id = "${element(data.aws_subnet_ids.private.ids, count.index)}"
}
Это поместит один экземпляр EC2 в каждую из ваших 3 подсетей, которые помечены Tier
= Private
в VPC со значением тега Name
, предоставленным переменной vpc
.
Очевидно, вы можете продвинуться дальше, используя aws_ami
источник данных, чтобы также получите идентификатор AMI, который вы хотите использовать, на основе некоторых критериев фильтрации. Это также помогает удалить некоторые из магических переменных, которые в противном случае могли бы быть в вашем коде Terraform.
person
ydaetskcoR
schedule
29.08.2018