如何通过布尔值控制Azure Log Analytics Workspace的Terraform创建
Terraform Azure 配置修正建议
需求明确
通过布尔变量控制Log Analytics Workspace的创建(变量为true时才创建),且该工作区与NSG处于同一资源组。
现有配置的问题点
- 缺少用于控制日志工作区创建的布尔变量,当前NSG的
count条件引用了未定义的变量var.nsg-log-analytics-workspace,且变量命名不符合Terraform规范(变量名需用下划线,不能用减号) nsg_log_category变量的默认值格式错误,list类型的默认值需用数组语法["nsg-main"]- 日志工作区的
nsg_log_category块引用了未定义的log.value,无法遍历指定的日志类别 - 多处代码块缺少闭合大括号,导致语法错误
修正后的完整配置
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
相关产品推荐
相关产品推荐

