我正在编写一个跨云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模板?
答案 0 :(得分:0)
每个资源都可以允许一个provider
字段,该字段告诉它要使用哪个提供程序。我认为您可能需要为两个提供者都设置真实的凭据,否则如果使用后端配置,Terraform将无法初始化。否则,将伪造的凭据设置为环境变量,然后看看会发生什么:
TF_VAR_AWS_ACCESS_KEY_ID="$AWS_ACCESS_KEY_ID" # et cetera