【问题标题】:How to apply count index on provider aws of terraform?如何在 terraform 的提供者 aws 上应用计数索引?
【发布时间】:2018-09-26 06:27:55
【问题描述】:

我想在 3 个不同的区域创建 3 个 ec2 实例。我正在使用 terraform 的迭代和计数索引功能。但我无法在 aws 提供程序中为区域参数应用相同的功能。

provider "aws" {
  region = "${element(var.region, count.index)}"
}

我在哪里传递如下值。

region = [ "us-east-1" , "eu-central-1" ]
instance_type = [ "t2.small" , "t2.micro" ]

terraform init 后出现以下错误。

count 变量只在资源内有效

【问题讨论】:

  • 正如错误消息所说,您不能这样做。无论如何,您都需要为每个别名指定单独的别名。
  • 忘了提,但我想有一个通用的解决方案。添加别名意味着硬编码修复区域。
  • 是的,不幸的是,这是 Terraform 的限制。如果您可以扩展您的需求可能会更好,也许有更好的解决方案。
  • 嗯。因为我有多区域部署,所以现在为每个区域生成单独的 terraform.tfvars 文件。谢谢好友@ydaetskcoR

标签: amazon-ec2 terraform


【解决方案1】:

要在提供程序块中输入的区域应该是您的默认区域。由于每个 aws 用户只有一个默认区域,因此它不能接受区域列表。

尝试将区域指定为:

region = "${var.region[0]}"

它将您指定为变量的区域列表的第一个元素。因此,您可以更改索引以指向列表的其他元素。

【讨论】:

  • 我猜这可能行不通。因为我有 1 个 terraform.tfvars 文件,其中我提到了一个区域列表变量,我想对其进行迭代。(忘记不同的用户,我们已经准备好所有设置)。现在我已经为每个区域创建了单独的 tfvars 文件。 region = [ "us-east-1", "us-west-2", "ca-central-1"]
猜你喜欢
  • 1970-01-01
  • 2021-03-08
  • 2020-09-07
  • 2023-01-19
  • 2020-06-22
  • 1970-01-01
  • 2019-01-30
  • 2020-09-24
  • 2018-02-03
相关资源
最近更新 更多