将 for_each 与提供程序设置一起使用

Eri*_*und 9 amazon-vpc terraform-provider-aws

我尝试在不同区域创建 VPC,为此我设置了多个提供商,并给定了与其区域相同的别名。VPC 使用 for_each 设置,其中each.key 是我想要在其中启动 VPC 的区域。我遇到的问题是我找不到将each.key 与“aws”一起使用的方法。资源的提供者设置所需的前缀。

这就是我尝试做的:

provider "aws" {
  alias = "eu-west-1"
  profile = "Terraform"
  region = "eu-west-1"
}
provider "aws" {
  alias = "eu-west-2"
  profile = "Terraform"
  region = "eu-west-2"
}

locals {
  pools = {
    "eu-west-1" = "${data.aws_vpc_ipam_pool.pooleu-west-1.id}"
    "eu-west-2" = "${data.aws_vpc_ipam_pool.pooleu-west-2.id}"
  }
}

resource "aws_vpc" "default" {
  for_each = local.pools
  provider = aws.${each.key}
  ipv4_ipam_pool_id = each.value
  enable_dns_support   = true
  enable_dns_hostnames = true

  tags = {
    Name = "main-vpc-${each.key}"
  }
}
Run Code Online (Sandbox Code Playgroud)

可以这样做还是我应该尝试寻找其他解决方案?我找不到任何答案,而且我对 terraform 的经验不足,无法知道这一点。

Eri*_*und 12

经过大量资源之后,我发现了该主题的这个线程,并且不可能(但也许永远不会)动态分配提供程序......

您可以在这里阅读更多信息: https ://github.com/hashicorp/terraform/issues/24476