0

我正在编写一个跨云 Terraform 模块(用于 google 和 aws),它接受cloud输入变量并相应地应用它,例如:

variable "cloud" {}

resource "google_example" {
  count = "${var.cloud == "google" ? 1 : 0}"
}

resource "aws_example" {
  count = "${var.cloud == "aws" ? 1 : 0}"
}

这种方法的问题是我只想为所选云提供凭据,而不是两者都提供 -cloud=aws例如我得到的设置:

Error: google: could not find default credentials. See https://developers.google.com/accounts/docs/application-default-credentials for more information.

有什么方法可以伪造未选择的云的云提供商凭据,还是我需要实施某种 Terraform 模板?

4

1 回答 1

0

每个资源都可以允许一个provider字段,该字段告诉它使用哪个提供者。我认为您可能需要为两个提供者设置真实凭据,否则如果您使用后端配置,Terraform 将无法初始化。否则,将假凭据设置为环境变量,看看会发生什么:

TF_VAR_AWS_ACCESS_KEY_ID="$AWS_ACCESS_KEY_ID" # et cetera
于 2019-05-29T14:50:55.253 回答