main.tf (221 lines of code) (raw):

# Create DCR for AVD resources resource "azurerm_monitor_data_collection_rule" "this" { location = var.monitor_data_collection_rule_location name = var.monitor_data_collection_rule_name resource_group_name = var.monitor_data_collection_rule_resource_group_name data_collection_endpoint_id = var.monitor_data_collection_rule_data_collection_endpoint_id description = var.monitor_data_collection_rule_description kind = var.monitor_data_collection_rule_kind tags = var.monitor_data_collection_rule_tags dynamic "data_flow" { for_each = var.monitor_data_collection_rule_data_flow content { destinations = data_flow.value.destinations streams = data_flow.value.streams built_in_transform = data_flow.value.built_in_transform output_stream = data_flow.value.output_stream transform_kql = data_flow.value.transform_kql } } dynamic "destinations" { for_each = [var.monitor_data_collection_rule_destinations] content { dynamic "azure_monitor_metrics" { for_each = lookup(destinations.value, "azure_monitor_metrics", null) == null ? [] : [destinations.value.azure_monitor_metrics] content { name = azure_monitor_metrics.value.name } } dynamic "event_hub" { for_each = lookup(destinations.value, "event_hub", null) == null ? [] : [destinations.value.event_hub] content { event_hub_id = event_hub.value.event_hub_id name = event_hub.value.name } } dynamic "event_hub_direct" { for_each = lookup(destinations.value, "event_hub_direct", null) == null ? [] : [destinations.value.event_hub_direct] content { event_hub_id = event_hub_direct.value.event_hub_id name = event_hub_direct.value.name } } dynamic "log_analytics" { for_each = lookup(destinations.value, "log_analytics", null) == null ? [] : [destinations.value.log_analytics] content { name = log_analytics.value.name workspace_resource_id = log_analytics.value.workspace_resource_id } } dynamic "monitor_account" { for_each = lookup(destinations.value, "monitor_account", null) == null ? [] : [destinations.value.monitor_account] content { monitor_account_id = monitor_account.value.monitor_account_id name = monitor_account.value.name } } dynamic "storage_blob" { for_each = lookup(destinations.value, "storage_blob", null) == null ? [] : [destinations.value.storage_blob] content { container_name = storage_blob.value.container_name name = storage_blob.value.name storage_account_id = storage_blob.value.storage_account_id } } dynamic "storage_blob_direct" { for_each = lookup(destinations.value, "storage_blob_direct", null) == null ? [] : [destinations.value.storage_blob_direct] content { container_name = storage_blob_direct.value.container_name name = storage_blob_direct.value.name storage_account_id = storage_blob_direct.value.storage_account_id } } dynamic "storage_table_direct" { for_each = lookup(destinations.value, "storage_table_direct", null) == null ? [] : [destinations.value.storage_table_direct] content { name = storage_table_direct.value.name storage_account_id = storage_table_direct.value.storage_account_id table_name = storage_table_direct.value.table_name } } } } dynamic "data_sources" { for_each = var.monitor_data_collection_rule_data_sources == null ? [] : [var.monitor_data_collection_rule_data_sources] content { dynamic "data_import" { for_each = data_sources.value.data_import == null ? [] : [data_sources.value.data_import] content { dynamic "event_hub_data_source" { for_each = data_import.value.event_hub_data_source content { name = event_hub_data_source.value.name stream = event_hub_data_source.value.stream consumer_group = event_hub_data_source.value.consumer_group } } } } dynamic "extension" { for_each = data_sources.value.extension == null ? [] : data_sources.value.extension content { extension_name = extension.value.extension_name name = extension.value.name streams = extension.value.streams extension_json = extension.value.extension_json input_data_sources = extension.value.input_data_sources } } dynamic "iis_log" { for_each = data_sources.value.iis_log == null ? [] : data_sources.value.iis_log content { name = iis_log.value.name streams = iis_log.value.streams log_directories = iis_log.value.log_directories } } dynamic "log_file" { for_each = data_sources.value.log_file == null ? [] : data_sources.value.log_file content { file_patterns = log_file.value.file_patterns format = log_file.value.format name = log_file.value.name streams = log_file.value.streams dynamic "settings" { for_each = log_file.value.settings == null ? [] : [log_file.value.settings] content { dynamic "text" { for_each = [settings.value.text] content { record_start_timestamp_format = text.value.record_start_timestamp_format } } } } } } dynamic "performance_counter" { for_each = data_sources.value.performance_counter == null ? [] : data_sources.value.performance_counter content { counter_specifiers = performance_counter.value.counter_specifiers name = performance_counter.value.name sampling_frequency_in_seconds = performance_counter.value.sampling_frequency_in_seconds streams = performance_counter.value.streams } } dynamic "platform_telemetry" { for_each = data_sources.value.platform_telemetry == null ? [] : data_sources.value.platform_telemetry content { name = platform_telemetry.value.name streams = platform_telemetry.value.streams } } dynamic "prometheus_forwarder" { for_each = data_sources.value.prometheus_forwarder == null ? [] : data_sources.value.prometheus_forwarder content { name = prometheus_forwarder.value.name streams = prometheus_forwarder.value.streams dynamic "label_include_filter" { for_each = prometheus_forwarder.value.label_include_filter == null ? [] : prometheus_forwarder.value.label_include_filter content { label = label_include_filter.value.label value = label_include_filter.value.value } } } } dynamic "syslog" { for_each = data_sources.value.syslog == null ? [] : data_sources.value.syslog content { facility_names = syslog.value.facility_names log_levels = syslog.value.log_levels name = syslog.value.name streams = syslog.value.streams } } dynamic "windows_event_log" { for_each = data_sources.value.windows_event_log == null ? [] : data_sources.value.windows_event_log content { name = windows_event_log.value.name streams = windows_event_log.value.streams x_path_queries = windows_event_log.value.x_path_queries } } dynamic "windows_firewall_log" { for_each = data_sources.value.windows_firewall_log == null ? [] : data_sources.value.windows_firewall_log content { name = windows_firewall_log.value.name streams = windows_firewall_log.value.streams } } } } dynamic "identity" { for_each = var.monitor_data_collection_rule_identity == null ? [] : [var.monitor_data_collection_rule_identity] content { type = identity.value.type identity_ids = identity.value.identity_ids } } dynamic "stream_declaration" { for_each = var.monitor_data_collection_rule_stream_declaration == null ? [] : var.monitor_data_collection_rule_stream_declaration content { stream_name = stream_declaration.value.stream_name dynamic "column" { for_each = stream_declaration.value.column content { name = column.value.name type = column.value.type } } } } dynamic "timeouts" { for_each = var.monitor_data_collection_rule_timeouts == null ? [] : [var.monitor_data_collection_rule_timeouts] content { create = timeouts.value.create delete = timeouts.value.delete read = timeouts.value.read update = timeouts.value.update } } }