demo_solution/modules/repo_terraform.azurerm.log_analytics/main.tf (68 lines of code) (raw):
# Get resource group data
data "azurerm_resource_group" "rg" {
count = var.location == null ? 1 : 0
name = var.rg_name
}
# Create an Azure Log Analytics (formally Operational Insights) workspace
resource "azurerm_log_analytics_workspace" "this" {
name = var.name
location = var.location != null ? var.location : data.azurerm_resource_group.rg[0].location
resource_group_name = var.rg_name
sku = var.pricing_tier
retention_in_days = var.retention_in_days
tags = var.tags
}
# Manages a diagnostic setting for Azure Log Analytics workspace
resource "azurerm_monitor_diagnostic_setting" "this" {
count = var.diagnostic_setting == null ? 0 : 1
name = var.diagnostic_setting.name
log_analytics_workspace_id = var.diagnostic_setting.log_analytics_workspace_id != null ? var.diagnostic_setting.log_analytics_workspace_id : azurerm_log_analytics_workspace.this.id
target_resource_id = azurerm_log_analytics_workspace.this.id
storage_account_id = var.diagnostic_setting.storage_account_id
eventhub_name = var.diagnostic_setting.eventhub_name
eventhub_authorization_rule_id = var.diagnostic_setting.eventhub_authorization_rule_id
dynamic "enabled_log" {
for_each = var.diagnostic_setting.log_category != null ? toset(var.diagnostic_setting.log_category) : []
content {
category = enabled_log.key
}
}
dynamic "enabled_log" {
for_each = var.diagnostic_setting.log_category_group != null ? toset(var.diagnostic_setting.log_category_group) : []
content {
category_group = enabled_log.key
}
}
dynamic "metric" {
for_each = var.diagnostic_setting.metric != null ? toset(var.diagnostic_setting.metric) : []
content {
category = metric.key
}
}
}
# Create an Azure Log Analytics solution
resource "azurerm_log_analytics_solution" "this" {
for_each = { for la_solution in var.la_solutions : la_solution.la_sln_name => la_solution }
solution_name = each.value.la_sln_name
location = var.location != null ? var.location : data.azurerm_resource_group.rg[0].location
resource_group_name = var.rg_name
workspace_resource_id = azurerm_log_analytics_workspace.this.id
workspace_name = azurerm_log_analytics_workspace.this.name
plan {
publisher = each.value.la_sln_publisher
product = each.value.la_sln_product
}
}
# Enable the Activity Log for on subscriptions level
resource "azurerm_resource_group_template_deployment" "this" {
for_each = toset(var.activity_log_subs)
name = "${each.key}-tf-arm-activitylog"
resource_group_name = var.rg_name
deployment_mode = var.deployment_mode
parameters_content = jsonencode(
{
"omsWorkspaceName" : {
"value" : azurerm_log_analytics_workspace.this.name
},
"subscription_id" : {
"value" : each.key
}
}
)
template_content = file("${path.module}/arm_ws_datasource.json")
}