es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Bloque de Terraform para condiciones repetidas de alerta de GCP: ¿cómo extraerlas en una constante?

Estoy configurando varias alarmas en terraform y varias tienen la misma política. ¿Puedo extraerla en algún tipo de variable para no tener que codificarla en cada alarma?
Las alarmas tendrán otras condiciones además de esa condición común.

Ejemplo:

resource "google_monitoring_alert_policy" "alertpolicy1" {
  display_name = "My Alert Policy 1"
  combiner     = "OR"
  conditions {
    display_name = "test condition"
    condition_threshold {
      filter     = "metric.type=\"compute.googleapis.com/instance/disk/write_bytes_count\" AND resource.type=\"gce_instance\""
      duration   = "60s"
      comparison = "COMPARISON_GT"
      aggregations {
        alignment_period   = "60s"
        per_series_aligner = "ALIGN_RATE"
      }
    }
  }
}

conditions {
    display_name = "test condition 2"
    condition_threshold {
      filter     = "metric.type=\"compute.googleapis.com/instance/disk/write_bytes_count\" AND resource.type=\"gce_instance\""
      duration   = "60s"
      comparison = "COMPARISON_GT"
      aggregations {
        alignment_period   = "60s"
        per_series_aligner = "ALIGN_RATE"
      }
    }
  }

user_labels = {
    foo = "bar"
  }
}

resource "google_monitoring_alert_policy" "alertpolicy2" {
  display_name = "My Alert Policy 2"
  combiner     = "OR"
  conditions {
    display_name = "test condition"
    condition_threshold {
      filter     = "metric.type=\"compute.googleapis.com/instance/disk/write_bytes_count\" AND resource.type=\"gce_instance\""
      duration   = "60s"
      comparison = "COMPARISON_GT"
      aggregations {
        alignment_period   = "60s"
        per_series_aligner = "ALIGN_RATE"
      }
    }
  }

user_labels = {
    foo = "bar"
  }
}

¿Puedo evitar repetir test condition aquí?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes extraer la condición común en un módulo separado y pasarla como un parámetro a los bloques de recursos para alert_policy_1 y alert_policy_2. De esta manera, puedes definir test condition una vez y reutilizarlo en múltiples bloques de recursos.

    Ejemplo:

    # Crea un módulo para la condición común
    module "test_condition" {
      source = "./modules/test_condition"
    
      # define cualquier variable necesaria para el módulo
    }
    
    # Usa la condición común en las políticas de alerta
    resource "google_monitoring_alert_policy" "alert_policy_1" {
      display_name = "Mi Política de Alerta 1"
      combiner     = "OR"
    
      conditions {
        display_name = "test condition"
        # Pasa la condición común como parámetro
        condition_threshold = module.test_condition.condition_threshold
      }
    
      # define cualquier otra condición o atributo específico para esta política de alerta
    }
    
    resource "google_monitoring_alert_policy" "alert_policy_2" {
      display_name = "Mi Política de Alerta 2"
      combiner     = "OR"
    
      conditions {
        display_name = "test condition"
        # Pasa la condición común como parámetro
        condition_threshold = module.test_condition.condition_threshold
      }
    
      # define cualquier otra condición o atributo específico para esta política de alerta
    }
    

    En este ejemplo, el módulo test_condition define la condición común y sus atributos. Los recursos alert_policy_1 y alert_policy_2 utilizan ambos la test condition, pero también definen otras condiciones o atributos específicos para cada política.

Comments are closed.