首页 > 解决方案 > Terraform 覆盖远程后端上的状态文件

问题描述

很可能我做错了什么或在这里遗漏了一些东西。

这就是我的 terraform 模板的样子:

locals {
      credentials_file_path    = "~/gcp-auth/account.json"
    }

terraform {
  backend "gcs" {
    bucket  = "somebucket-tf-state"
    prefix  = "terraform/state/"
    credentials = "~/gcp-auth/account.json"
  }
}

provider "google" {
 region = "${var.region}"
 credentials = "${file(local.credentials_file_path)}"
}

module "project" {
  source = "../modules/gcp-project/"
  project_name      = "${var.project_name}"
  billing_account = "${var.billing_account}"
  org_id          = "${var.org_id}"
}

当我使用不同的参数多次运行它时,它会覆盖以前的状态文件。

这是我在桶中看到的:

Buckets/somebucket-tf-state/terraform/state/default.tfstate

有没有办法可以为每个运行模板的项目创建不同的状态文件?

标签: google-cloud-platformterraformterraform-provider-gcp

解决方案


更好的选择是使用 GitOps。您应该为每个分支创建一个环境,并为每个环境在存储桶名称中注入正确的值。


推荐阅读