繁体   English   中英

来自另一个Terraform计划的参考变量

[英]Reference variables from another Terraform plan

我已经使用Terraform在AWS中创建了具有主要和灾难恢复网站架构的设置。

主网站位于region1中,灾难恢复位于region2中。 该脚本创建为不同的计划或不同的目录。

对于region1,我创建了一个目录,该目录仅包含主要网站Terraform脚本以启动主要网站基础结构。

对于region2,我创建了另一个目录,该目录仅包含灾难恢复网站Terraform脚本以启动灾难恢复网站基础结构。

在我的主要网站脚本中,我需要灾难恢复网站的一些值,例如VPC对等连接ID,DMS端点ARN等。

如何从灾难恢复网站目录到主网站目录引用这些变量?

一种选择是使用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数据源之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区域中的其他任何ID或需要引用的内容执行类似的操作。

值得注意的是,DMS资源没有任何数据源,因此您要么需要使用terraform_remote_state数据源来获取任何ID(例如源端点ARN和目标端点ARN来设置aws_dms_replication_task要么可以对其进行结构化,以便所有DMS发生在DR区域中,然后您只需引用其他区域的VPC ID数据库名称以及可能的KMS密钥ID ,这些都可以通过数据源完成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM