-1

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

这就是我的 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

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

4

2 回答 2

1

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

于 2020-02-25T23:38:07.640 回答
1

如果我理解您要正确执行的操作,那么听起来您需要的是workspaces

做就是了 :

# Select per-project workspace or create new workspace
terraform workspace select $GCE_PROJECT || terraform workspace new $GCE_PROJECT
$ Plan and apply as usual.
terraform plan -out .terraform/.terraform.plan && terraform apply .terraform/.terraform.plan
# Revert to default workspace
terraform workspace select default
于 2018-07-06T07:04:51.647 回答