【问题标题】:Providing Terraform with credentials in terraform files instead of env variable在 terraform 文件而不是 env 变量中为 Terraform 提供凭据
【发布时间】:2019-07-30 18:57:39
【问题描述】:

我在 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 命令。如何在不设置 env 变量的情况下让 terraform 知道凭据在哪里?

【问题讨论】:

    标签: terraform terraform-provider-gcp


    【解决方案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
      }
    }
    

    【讨论】:

    • 缺少配置 = {
    猜你喜欢
    • 2020-03-12
    • 2021-12-08
    • 2019-10-15
    • 2018-11-22
    • 2019-12-22
    • 2018-11-24
    • 2017-08-21
    • 1970-01-01
    • 2021-06-10
    相关资源
    最近更新 更多