如何在Terraform中伪造云提供商的凭证?

时间:2019-05-29 12:50:14

标签: terraform terraform-provider-aws terraform-provider-gcp

我正在编写一个跨云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模板?

1 个答案:

答案 0 :(得分:0)

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

TF_VAR_AWS_ACCESS_KEY_ID="$AWS_ACCESS_KEY_ID" # et cetera