来自一个 Git 存储库的多个地形环境?
Multiple terraform environments from one Git repo?
我正在使用 GitHub Actions 通过 Terraform 部署我的代码。每当代码被推送到 master
分支时,都会触发构建代码和 运行s terraform apply
的 GitHub 操作。这很好用。
问题是现在我也想要一个 staging
环境。每当代码被推送到 staging
分支时,它应该被构建并且 terraform
apply` 应该是 运行 针对 不同的后端 .
但是,这需要不同的 Terraform 配置:
terraform {
backend "s3" {
bucket = "bucket-for-my-terraform-state"
key = "global/s3/terraform.tfstate"
region = "eu-west-2"
dynamodb_table = "terraform-locks"
encrypt = true
}
}
我不能使用 Terraform 变量,因为 backend
块中不允许使用这些变量。
如何从一个具有多个分支的 Git 存储库部署多个 Terraform?
$ terraform --version
Terraform v0.14.4
+ provider registry.terraform.io/hashicorp/aws v3.23.0
terraform {
backend "s3" {}
}
然后为每个环境准备文件:
- 产品
bucket = "bucket-prod"
key = "global/s3/terraform.tfstate"
region = "eu-west-2"
dynamodb_table = "terraform-locks"
encrypt = true
- 分期
bucket = "bucket-staging"
key = "global/s3/terraform.tfstate"
region = "eu-west-2"
dynamodb_table = "terraform-locks"
encrypt = true
然后 prod
你会打电话给
terraform init -backend-config=backend.prod.hcl
对于分期,它将是
terraform init -backend-config=backend.staging.hcl
我正在使用 GitHub Actions 通过 Terraform 部署我的代码。每当代码被推送到 master
分支时,都会触发构建代码和 运行s terraform apply
的 GitHub 操作。这很好用。
问题是现在我也想要一个 staging
环境。每当代码被推送到 staging
分支时,它应该被构建并且 terraform
apply` 应该是 运行 针对 不同的后端 .
但是,这需要不同的 Terraform 配置:
terraform {
backend "s3" {
bucket = "bucket-for-my-terraform-state"
key = "global/s3/terraform.tfstate"
region = "eu-west-2"
dynamodb_table = "terraform-locks"
encrypt = true
}
}
我不能使用 Terraform 变量,因为 backend
块中不允许使用这些变量。
如何从一个具有多个分支的 Git 存储库部署多个 Terraform?
$ terraform --version
Terraform v0.14.4
+ provider registry.terraform.io/hashicorp/aws v3.23.0
terraform {
backend "s3" {}
}
然后为每个环境准备文件:
- 产品
bucket = "bucket-prod"
key = "global/s3/terraform.tfstate"
region = "eu-west-2"
dynamodb_table = "terraform-locks"
encrypt = true
- 分期
bucket = "bucket-staging"
key = "global/s3/terraform.tfstate"
region = "eu-west-2"
dynamodb_table = "terraform-locks"
encrypt = true
然后 prod
你会打电话给
terraform init -backend-config=backend.prod.hcl
对于分期,它将是
terraform init -backend-config=backend.staging.hcl