You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Terraform部署的Azure资源组及Log Analytics Workspace名称

问题描述

我已经在Azure不同区域成功部署了2个Log Analytics Workspace(LAW),每个LAW都位于对应区域的专属资源组中。现在需要修改两组资源组(p-ause-lp-management-rg & p-auea-lp-management-rg)以及对应的LAW(p-ause-lp-management-log & p-auea-lp-management-log)的名称,当前资源结构如下:

p-ause-lp-management-rg
  >p-ause-lp-management-log

p-auea-lp-management-rg
  >p-auea-lp-management-log

当前使用的Terraform代码如下:

main.tf

resource "azurerm_resource_group" "workspaces" {
  for_each = var.workspaces

  name     = each.key
  location = each.value.location
}

resource "azurerm_log_analytics_workspace" "workspaces" {
  for_each = var.workspaces

  name                = each.key
  location            = each.value.location
  resource_group_name = azurerm_resource_group.workspaces[each.key].name
  sku                 = "PerGB2018"
  retention_in_days   = each.value.retention_in_days
}

variables.tf

variable "workspaces" {
  type = map(object({
    location          = string
    retention_in_days = number
  }))
  default = {
    workspace1 = {
      location          = "australiasoutheast"
      retention_in_days = 30
    }
    workspace2 = {
      location          = "australiaeast"
      retention_in_days = 30
    }
    # Add more workspaces as needed
  }
}

outputs.tf

# Define outputs
output "workspace_ids" {
  value = values(azurerm_log_analytics_workspace.workspaces)[*].id
}

output "workspace_names" {
  value = values(azurerm_log_analytics_workspace.workspaces)[*].name
}

output "resource_group_ids" {
  value = values(azurerm_resource_group.workspaces)[*].id
}

output "resource_group_names" {
  value = values(azurerm_resource_group.workspaces)[*].name
}

output "resource_group_locations" {
  value = values(azurerm_resource_group.workspaces)[*].location
}
修改方案

当前代码直接用变量map的key(workspace1/workspace2)作为资源组和LAW的名称,需要调整命名逻辑来生成目标格式,推荐两种实现方式:

方式一:直接指定目标名称(直观易维护)

修改variables.tf,将map的key替换为目标资源组名称,同时新增LAW名称字段:

variable "workspaces" {
  type = map(object({
    location          = string
    retention_in_days = number
    law_name          = string
  }))
  default = {
    "p-ause-lp-management-rg" = {
      location          = "australiasoutheast"
      retention_in_days = 30
      law_name          = "p-ause-lp-management-log"
    }
    "p-auea-lp-management-rg" = {
      location          = "australiaeast"
      retention_in_days = 30
      law_name          = "p-auea-lp-management-log"
    }
  }
}

同步修改main.tf,资源组名称复用map的key,LAW名称调用新增的law_name字段:

resource "azurerm_resource_group" "workspaces" {
  for_each = var.workspaces

  name     = each.key
  location = each.value.location
}

resource "azurerm_log_analytics_workspace" "workspaces" {
  for_each = var.workspaces

  name                = each.value.law_name
  location            = each.value.location
  resource_group_name = azurerm_resource_group.workspaces[each.key].name
  sku                 = "PerGB2018"
  retention_in_days   = each.value.retention_in_days
}

方式二:通过规则自动生成(适合批量扩展)

如果后续需要新增更多区域的资源,可以通过区域缩写自动拼接命名,减少手动输入:

  1. 调整variables.tf,用区域缩写作为map的key:
variable "workspaces" {
  type = map(object({
    location          = string
    retention_in_days = number
  }))
  default = {
    "ause" = {
      location          = "australiasoutheast"
      retention_in_days = 30
    }
    "auea" = {
      location          = "australiaeast"
      retention_in_days = 30
    }
  }
}
  1. 修改main.tf,通过字符串拼接生成资源组和LAW名称:
resource "azurerm_resource_group" "workspaces" {
  for_each = var.workspaces

  name     = "p-${each.key}-lp-management-rg"
  location = each.value.location
}

resource "azurerm_log_analytics_workspace" "workspaces" {
  for_each = var.workspaces

  name                = "p-${each.key}-lp-management-log"
  location            = each.value.location
  resource_group_name = azurerm_resource_group.workspaces[each.key].name
  sku                 = "PerGB2018"
  retention_in_days   = each.value.retention_in_days
}
执行步骤
  1. 运行terraform plan查看变更计划,确认资源组和LAW的名称是否符合预期
  2. 确认无误后运行terraform apply执行变更

注意:Terraform中修改资源名称等同于销毁旧资源并创建新资源,请提前备份旧LAW中的数据,或确认数据不再需要后再执行操作。

内容的提问来源于stack exchange,提问作者Cyborganizer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 00:35:58