很可能我在这里做错了什么或错过了什么。
这是我的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
是否可以为运行模板的每个项目创建不同的状态文件?
答案 0 :(得分:1)
更好的选择是使用GitOps。您应该为每个分支创建一个环境,并为每个环境在存储桶名称中注入正确的值。
答案 1 :(得分:0)
如果我了解您要正确执行的操作,那么听起来您需要的是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