使用 Azure Blob 进行状态管理时,使用 Terraform Workspaces 有什么大的好处吗?
When using Azure Blob for state management, is there any big benefit for using Terraform Workspaces?
我正在阅读这篇文章并尝试了解在使用 Azure Blob 存储进行状态管理时 Terraform Workspaces 的好处。
https://danielwertheim.se/terraform-workspaces-and-remote-state-in-azure/
由于我使用 Azure Blob 存储进行状态管理,我可以使用变量为每个环境(例如 DEV 或 PROD)使用(切换到)不同的容器 - 如下所示:
terraform 工作空间增加了哪些附加值,我无法使用每个环境(DEV、PROD)具有专用 container_name
的简单 Azure Blob 状态?
首先,您无法在 Terraform 后端设置变量。因此,如果您想在没有不同地形块的情况下重复使用相同的模块,则需要切换到工作区。
有些人会为他们的所有状态使用一个存储帐户。使用键定义项目。后端将负责根据工作区名称将状态键入到单独的位置。
这是手动驱动 terraform 命令时小型项目的下降。您还可以在代码中引用 terraform.workspace
以包含条件。
最大的缺点是处理身份验证和变量。如果您使用不同的订阅并以另一个订阅的状态登录,您会收到一个可怕的消息,即所有内容都需要更换。所以态势感知需要提高。
跟踪输入值需要存储在某处。当我过去这样做时,我最终将变量存储为本地变量,并以工作区名称为条件。
▶ cat .\main.tf
variable "environment" {
type = string
}
terraform {
backend "azurerm" {
resource_group_name = "tfstate"
storage_account_name = "account"
container_name = var.environment
key = "terraform.tfstate"
}
}
~\projects\test\t8 ◷ 9:32:49 AM
▶ terraform init
Initializing the backend...
Error: Variables not allowed
on main.tf line 9, in terraform:
9: container_name = var.environment
Variables may not be used here.
我正在阅读这篇文章并尝试了解在使用 Azure Blob 存储进行状态管理时 Terraform Workspaces 的好处。
https://danielwertheim.se/terraform-workspaces-and-remote-state-in-azure/
由于我使用 Azure Blob 存储进行状态管理,我可以使用变量为每个环境(例如 DEV 或 PROD)使用(切换到)不同的容器 - 如下所示:
terraform 工作空间增加了哪些附加值,我无法使用每个环境(DEV、PROD)具有专用 container_name
的简单 Azure Blob 状态?
首先,您无法在 Terraform 后端设置变量。因此,如果您想在没有不同地形块的情况下重复使用相同的模块,则需要切换到工作区。
有些人会为他们的所有状态使用一个存储帐户。使用键定义项目。后端将负责根据工作区名称将状态键入到单独的位置。
这是手动驱动 terraform 命令时小型项目的下降。您还可以在代码中引用 terraform.workspace
以包含条件。
最大的缺点是处理身份验证和变量。如果您使用不同的订阅并以另一个订阅的状态登录,您会收到一个可怕的消息,即所有内容都需要更换。所以态势感知需要提高。
跟踪输入值需要存储在某处。当我过去这样做时,我最终将变量存储为本地变量,并以工作区名称为条件。
▶ cat .\main.tf
variable "environment" {
type = string
}
terraform {
backend "azurerm" {
resource_group_name = "tfstate"
storage_account_name = "account"
container_name = var.environment
key = "terraform.tfstate"
}
}
~\projects\test\t8 ◷ 9:32:49 AM
▶ terraform init
Initializing the backend...
Error: Variables not allowed
on main.tf line 9, in terraform:
9: container_name = var.environment
Variables may not be used here.