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

如何通过布尔值控制Azure Log Analytics Workspace的Terraform创建

Terraform Azure 配置修正建议

需求明确

通过布尔变量控制Log Analytics Workspace的创建(变量为true时才创建),且该工作区与NSG处于同一资源组。

现有配置的问题点

  1. 缺少用于控制日志工作区创建的布尔变量,当前NSG的count条件引用了未定义的变量var.nsg-log-analytics-workspace,且变量命名不符合Terraform规范(变量名需用下划线,不能用减号)
  2. nsg_log_category变量的默认值格式错误,list类型的默认值需用数组语法["nsg-main"]
  3. 日志工作区的nsg_log_category块引用了未定义的log.value,无法遍历指定的日志类别
  4. 多处代码块缺少闭合大括号,导致语法错误

修正后的完整配置

variables.tf

# 控制Log Analytics Workspace是否创建的布尔变量
variable "create_log_analytics_workspace" {
  type        = bool
  description = "设置为true时创建Log Analytics Workspace"
  default     = false
}

# NSG日志类别列表
variable "nsg_log_category" {
  type        = list(string)
  description = "需要启用的NSG日志类别列表"
  default     = ["nsg-main"] # 修正list默认值格式
}

# 可选:若需要控制NSG的创建,可定义对应变量(原配置中的count条件变量)
variable "nsg_deploy_environment" {
  type        = string
  description = "控制NSG是否创建的环境标识"
  default     = "nsg-log-main"
}

main.tf

# 资源组(假设已定义,若未定义需补充)
resource "azurerm_resource_group" "example" {
  name     = "example-resources"
  location = "East US"
}

# NSG资源:与日志工作区同资源组
resource "azurerm_network_security_group" "example" {
  name                = "NSG-group"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  # 若需要按环境控制NSG创建,修正变量名后保留count
  count = var.nsg_deploy_environment == "nsg-log-main" ? 1 : 0
}

# Log Analytics Workspace:仅当布尔变量为true时创建
resource "azurerm_log_analytics_workspace" "example" {
  count               = var.create_log_analytics_workspace ? 1 : 0 # 布尔变量控制创建
  name                = "log-analytics-workspace"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name # 与NSG同资源组
  sku                 = "PerGB2018"
  retention_in_days   = 30

  # 动态遍历日志类别列表,创建对应的nsg_log_category块
  dynamic "nsg_log_category" {
    for_each = var.nsg_log_category
    content {
      category = nsg_log_category.value
      enabled  = true

      retention_policy {
        enabled = true
        days    = 365
      }
    }
  }
}

关键说明

  • 用var.create_log_analytics_workspace布尔变量精准控制日志工作区的创建逻辑
  • 通过dynamic块遍历var.nsg_log_category列表,自动生成多个日志类别配置
  • 确保日志工作区的resource_group_name与NSG一致,共同使用azurerm_resource_group.example.name
  • 修正了所有语法错误,补充了必要的代码闭合块

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 08:15:28