Как использовать значения идентификатора VPC и идентификатора подсетей, которые были созданы из одного плана Terraform, в другой план Terraform - PullRequest
0 голосов
/ 29 августа 2018

Я создал VPC, подсети и группы безопасности в одном плане Terraform (назовем это Plan A). Он выполнен хорошо, и состояние сохраняется в удаленном бэкэнде S3.

Теперь у меня есть новый план Terraform (назовем это Plan B), где мне нужно запустить экземпляр EC2. Для этого мне нужно получить VPC, идентификаторы подсетей из вывода Plan A Terraform.

Есть ли рекомендуемый способ сделать это?

1 Ответ

0 голосов
/ 29 августа 2018

Существует два основных способа передачи результатов в Terraform.

Первый и самый старый способ заключается в использовании функции удаленного состояния для извлечения выходных данных в другом файле состояния.

Второй, более новый, подход заключается в использовании источников данных вашего провайдера , которые предоставляют вашему провайдеру только для чтения запрос на получение информации о ресурсе.

При этом вы будете использовать источники данных aws_vpc и aws_subnet_ids для получения информации о соответствующих идентификаторах подсети.

Пример может выглядеть примерно так, как указано в 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 ID, который вы хотите использовать, основываясь на некоторых критериях фильтрации. В противном случае это также поможет удалить некоторые из более магических переменных, которые могут быть в вашем коде Terraform.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...