Один из вариантов - использовать источник данных terraform_remote_state
для извлечения выходных данных из другого файла состояния, например:
VPC / main.tf
resource "aws_vpc" "foo" {
cidr_block = "10.0.0.0/16"
}
output "vpc_id" {
value = "${aws_vpc.foo.id}"
}
Маршрут / main.tf
data "terraform_remote_state" "vpc" {
backend = "s3"
config {
bucket = "mybucket"
key = "path/to/my/key"
region = "us-east-1"
}
}
resource "aws_route_table" "rt" {
vpc_id = "${data.terraform_remote_state.vpc.vpc_id}"
}
Однако почти всегда лучше просто использовать собственные источники данных поставщика, если они существуют для нужного вам ресурса.
Так что в вашем случае вам нужно будет использовать источники данных, такие как aws_vpc_peering_connection
источник данных, чтобы иметь возможность устанавливать кросс-маршрутизацию VPC с помощью чего-то вроде этого:
data "aws_vpc_peering_connection" "pc" {
vpc_id = "${data.aws_vpc.foo.id}"
peer_cidr_block = "10.0.0.0/16"
}
resource "aws_route_table" "rt" {
vpc_id = "${aws_vpc.foo.id}"
}
resource "aws_route" "r" {
route_table_id = "${aws_route_table.rt.id}"
destination_cidr_block = "${data.aws_vpc_peering_connection.pc.peer_cidr_block}"
vpc_peering_connection_id = "${data.aws_vpc_peering_connection.pc.id}"
}
Вам нужно будет сделать аналогичные вещи для любых других идентификаторов или вещей, на которые вы должны ссылаться в вашем регионе DR.
Стоит отметить, что нет никаких источников данных для ресурсов DMS, поэтому вам нужно либо использовать источник данных terraform_remote_state
для получения любых идентификаторов (таких как ARN источника и целевой конечной точки для настройки aws_dms_replication_task
или вы могли бы структурировать вещи так, чтобы все вещи DMS происходили в области DR, и тогда вам нужно только сослаться на VPC ID , имен базы данных и потенциально идентификаторы ключей KMS , что можно сделать из источников данных.