为Terraform提供Terraform文件中的凭据,而不是env变量

为Terraform提供Terraform文件中的凭据,而不是env变量,terraform,terraform-provider-gcp,Terraform,Terraform Provider Gcp,我已经在GCP上建立了一个带有远程后端的terraform项目。现在,当我想要部署基础架构时,我遇到了凭据问题。我有一个凭证文件 \home\mike\.config\gcloud\credentials.json 在我的terraform项目中,我有以下关于远程状态的数据: data "terraform_remote_state" "project_id" { backend = "gcs" workspace = "${terraform.workspace}"

我已经在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

我确实让它按预期运行。我的问题是,我想在terraform文件中指定凭据,因为我正在从python脚本自动运行terraform命令,而在python脚本中我无法设置环境变量。在不设置env变量的情况下,我如何让terraform知道凭据在哪里?

我最终解决了这个问题

此外,数据还需要具有凭据

例如

数据“地形远程状态”“项目id”{
backend=“gcs”
workspace=“${terraform.workspace}”
配置={
bucket=“${var.bucket\u name}”
prefix=“${var.prefix_project}”

credentials=“${var.credentials}”缺少配置={
data "terraform_remote_state" "project_id" {
  backend   = "gcs"
  workspace = "${terraform.workspace}"

  config = {
    bucket = "${var.bucket_name}"
    prefix = "${var.prefix_project}"
    credentials = "${var.credentials}"  <- added
  }
}