首页 > 解决方案 > Terraform - 变量内的变量

问题描述

我想在变量中使用变量。

这是我的资源:

resource "aws_route" "vpc_peering_accepter" {
provider = "aws.accepter"
count = length(data.terraform_remote_state.vpc.outputs.${var.region}-vpc-private_routing_tables)
route_table_id = tolist(data.terraform_remote_state.vpc.outputs.${var.region}-vpc-private_routing_tables)[count.index]
destination_cidr_block = var.vpc_cidr
vpc_peering_connection_id = aws_vpc_peering_connection.peer.*.id[0]
}

当然这个是行不通的。最好的做法是什么?

谢谢, 埃拉德

标签: terraform

解决方案


您可以将本地值查找功能结合使用来完成此操作。

在以下示例中,空数据源正在模仿data.terraform_remote_state.vpc.outputs

variable "region" {
  default = "us-east1"
}

locals {
  vpc_private_routing_tables = "${var.region}-vpc-private_routing_tables"
}

data "null_data_source" "values" {
  inputs = {
    us-east1-vpc-private_routing_tables = "11111111"
    us-east2-vpc-private_routing_tables = "22222222"
  }
}

output "vpc_peering" {
  value = lookup(data.null_data_source.values.inputs, local.vpc_private_routing_tables)
}

推荐阅读