我已经在GCP上建立了一个带有远程后端的terraform项目。现在,当我要部署基础结构时,我遇到了凭据问题。我在
中有一个凭证文件\home\mike\.config\gcloud\credentials.json
在我的terraform项目中,我具有以下有关远程状态的数据:
data "terraform_remote_state" "project_id" {
backend = "gcs"
workspace = "${terraform.workspace}"
config {
bucket = "${var.bucket_name}"
prefix = "${var.prefix_project}"
}
}
,然后使用我的凭据文件的详细信息指定云提供商。
provider "google" {
version = "~> 1.16"
project = "${data.terraform_remote_state.project_id.project_id}"
region = "${var.region}"
credentials = "${file(var.credentials)}"
}
但是,这会遇到
data.terraform_remote_state.project_id: data.terraform_remote_state.project_id:
error initializing backend:
storage.NewClient() failed: dialing: google: could not find default
credentials.
如果我添加
export GOOGLE_APPLICATION_CREDENTIALS=/home/mike/.config/gcloud/credentials.json
我确实可以按需运行它。我的问题是,当我从无法设置环境变量的python脚本中以自动化方式运行terraform命令时,我想在terraform文件中指定凭据。如何在不设置env变量的情况下让terraform知道凭据在哪里?
答案 0 :(得分:1)
我终于弄明白了。
此外,数据还需要具有凭据。
例如
data "terraform_remote_state" "project_id" {
backend = "gcs"
workspace = "${terraform.workspace}"
config {
bucket = "${var.bucket_name}"
prefix = "${var.prefix_project}"
credentials = "${var.credentials}" <- added
}
}