Я использовал Terragrunt для организации создания AWS VPC не по умолчанию.У меня есть состояние S3 / DynamoDB mgmt, а код VPC - это модуль.У меня есть код 'VPC environment' terraform.tfvars
, проверенный во втором репо согласно terragrunt
README.md .
Я создал второй модуль, который в конечном итоге создаст хосты в этомVPC, но пока просто стремится вывести свой идентификатор.Я создал отдельную «среду хостов» / terraform.tfvars
для создания экземпляров этого модуля.
- Я запускаю
terragrunt apply
в каталоге среды VPC - VPC создал - Я запускаю
terragrunt apply
второй раз в каталоге среды хоста - директива output не работает (без ошибок, но неверно, см. Ниже).
Это предшествует одному дню запуска terragrunt apply-all
в родительском каталоге каталогов среды VPC / hosts;Мое чтение документации предполагает использование источника данных terraform_remote_state
для предоставления идентификатора VPC, поэтому я указал такой доступ в файле data.tf
модуля hosts :
data "terraform_remote_state" "vpc" {
backend = "s3"
config {
bucket = "myBucket"
key = "keyToMy/vpcEnvironment.tfstate"
region = "stateRegion"
}
}
Затем в модуле hosts outputs.tf
я указал выход для проверки назначения:
output "mon_vpc" {
value = "${data.terraform_remote_state.vpc.id}"
}
Когда я запускаю (2) выше, он завершается с:
Подать заявку полностью!Ресурсы: 0 добавлено, 0 изменено, 0 уничтожено.
Выходы:
mon_vpc = 2018-06-02 23: 14: 42.958848954 +0000 UTC
Вопросы:
Я неправильно настраиваю код так, чтобы среда хоста была настроена для правильного получения идентификатора VPC из уже существующего VPC (состояние terraform)файл) - любой совет о том, что изменить здесь, будет принят.
Похоже, мне удалось получить дату создания VPC, а не его ID, которыйучитывая, что код озадачивает - кто-нибудь знает, почему?
Я не использую модули сообщества - все вручную свернуто.
РЕДАКТИРОВАТЬ: В ответ на Брэндон Миллереще немного.В моем модуле VPC у меня есть файл output.tf, содержащий среди прочих выходных данных:
output "aws_vpc.mv.id-op" {
value = "${aws_vpc.mv.id}"
}
, а vpc.tf содержит
resource "aws_vpc" "mv" {
cidr_block = "${var.vpcCidr}"
enable_dns_support = true
enable_dns_hostnames = true
tags = {
Name = "mv-vpc-${var.aws_region}"
}
}
Поскольку этот cfg приводит к созданию vpc,и так как большинство параметров <computed>
, я предположил, что состояние будет содержать достаточное количество данных для других модулей, к которым можно обратиться, консультируясь с состоянием (сначала я предположил, что terraform использовал для этого AWS API под капотом, вместо того, чтобы обращаться к другому состояниюключ).
РЕДАКТИРОВАТЬ 2: Сначала прочитайте все ответы @ brendan-miller и последующие комментарии.Использование точек вызывает проблему, так как это приводит к путанице с терраформой (см. Ответ Брендана для формата спецификации ниже):
Error: output 'mon_vpc': unknown resource 'data.aws_vpc.mv-ds' referenced in variable data.aws_vpc.mv-ds.vpc.id