Я работаю над настройкой нескольких учетных записей AWS с помощью Terraform. У меня есть основная учетная запись, которая создает несколько дополнительных учетных записей, и в этих дополнительных учетных записях я ссылаюсь на удаленное состояние мастера для получения выходных значений.
Команда terraform plan
не работает для этой конфигурации в тестовом файле main.tf:
terraform {
required_version = ">= 0.12.0"
backend "s3" {
bucket = "bucketname"
key = "statekey.tfstate"
region = "us-east-1"
}
}
provider "aws" {
region = "us-east-1"
version = "~> 2.7"
}
data "aws_region" "current" {}
data "terraform_remote_state" "common" {
backend = "s3"
config {
bucket = "anotherbucket"
key = "master.tfstate"
}
}
Со следующей ошибкой:
➜ test terraform plan
Error: Unsupported block type
on main.tf line 20, in data "terraform_remote_state" "common":
20: config {
Blocks of type "config" are not expected here. Did you mean to define argument
"config"? If so, use the equals sign to assign it a value.
Из того, что я могу сказать по документация, это должно работать… что я делаю не так?
➜ test terraform -v
Terraform v0.12.2
+ provider.aws v2.14.0
@ydaetskcoR Я вытаскиваю номера учетных записей AWS. Родительская учетная запись создает несколько дополнительных учетных записей в организациях AWS для сред и проектов, и каждый проект имеет собственную конфигурацию Terraform.
Кажется, связанный документ не обновляется после обновления до 0.12.x
В качестве подсказки об ошибке добавьте =
после config
data "terraform_remote_state" "common" {
backend = "s3"
config = {
bucket = "anotherbucket"
key = "master.tfstate"
}
}
Если проблема устранена, порекомендуйте поднять PR для обновления документа, тогда другие смогут избежать повторения той же проблемы.
Иногда ответ просто смотрит мне прямо в лицо. ??♂️ Это помогло.
Из любопытства, какие вещи вы извлекаете из удаленного состояния? В 99% случаев, когда люди используют источник данных удаленного состояния, я бы рекомендовал вместо этого заменить его более родным источником данных поставщика.