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

resource "azurerm_monitor_autoscale_setting" "monitor_autoscale_setting" { location = var.location name = var.name resource_group_name = var.resource_group_name target_resource_id = var.target_resource_id enabled = var.enabled tags = var.tags dynamic "profile" { for_each = var.profiles content { name = profile.value.name capacity { default = profile.value.capacity.default maximum = profile.value.capacity.maximum minimum = profile.value.capacity.minimum } dynamic "fixed_date" { for_each = profile.value.fixed_date == null ? [] : [profile.value.fixed_date] content { end = fixed_date.value.end start = fixed_date.value.start timezone = try(fixed_date.value.timezone, null) } } dynamic "recurrence" { for_each = profile.value.recurrence == null ? [] : [profile.value.recurrence] content { days = recurrence.value.days hours = recurrence.value.hours minutes = recurrence.value.minutes timezone = try(recurrence.value.timezone, null) } } dynamic "rule" { for_each = profile.value.rules == null ? {} : profile.value.rules content { metric_trigger { metric_name = rule.value.metric_trigger.metric_name metric_resource_id = coalesce(rule.value.metric_trigger.metric_resource_id, var.target_resource_id) operator = rule.value.metric_trigger.operator statistic = rule.value.metric_trigger.statistic threshold = rule.value.metric_trigger.threshold time_aggregation = rule.value.metric_trigger.time_aggregation time_grain = rule.value.metric_trigger.time_grain time_window = rule.value.metric_trigger.time_window divide_by_instance_count = try(rule.value.metric_trigger.divide_by_instance_count, null) metric_namespace = try(rule.value.metric_trigger.metric_namespace, null) dynamic "dimensions" { for_each = rule.value.metric_trigger.dimensions == null ? {} : rule.value.metric_trigger.dimensions content { name = dimensions.value.name operator = dimensions.value.operator values = dimensions.value.values } } } scale_action { cooldown = rule.value.scale_action.cooldown direction = rule.value.scale_action.direction type = rule.value.scale_action.type value = rule.value.scale_action.value } } } } } dynamic "notification" { for_each = var.notification == null ? [] : [var.notification] content { dynamic "email" { for_each = notification.value.email == null ? [] : [notification.value.email] content { custom_emails = try(email.value.custom_emails, null) send_to_subscription_administrator = try(email.value.send_to_subscription_administrator, null) send_to_subscription_co_administrator = try(email.value.send_to_subscription_co_administrator, null) } } dynamic "webhook" { for_each = notification.value.webhooks == null ? {} : notification.value.webhooks content { service_uri = webhook.value.service_uri properties = try(webhook.value.properties, null) } } } } dynamic "predictive" { for_each = var.predictive == null ? [] : [var.predictive] content { scale_mode = predictive.value.scale_mode look_ahead_time = try(predictive.value.look_ahead_time, null) } } }