Geschreven door Sefa Yavuz

Infrastructuur als code met Terraform

DevOps3 minuten leestijd

Als DevOps Engineer bij een klant gebruiken we Terraform voor het beheer van de infrastructuur via code (IaS). Dit biedt ons vele voordelen, zoals de mogelijkheid om efficiënter te werken en menselijke fouten te minimaliseren. In deze blog zal ik mijn ervaringen met Terraform delen, en zal ik voorbeelden geven van hoe we Terraform gebruiken voor het beheer van alerts op Google Cloud Platform.

Wat is Terraform?

Terraform is een open-source tool van HashiCorp die wordt gebruikt voor het beheer van de infrastructuur via code. Met Terraform kunnen we de infrastructuur definiëren en beheren door middel van code, in plaats van handmatig te werken via een webconsole of terminal. Terraform maakt gebruik van een declarative syntax, wat betekent dat we ons niet bezig hoeven te houden met de onderliggende details van de configuratie.

Voordelen van Terraform

Terraform biedt vele voordelen ten opzichte van traditioneel handmatig beheer van de infrastructuur, waaronder:

  • Efficiëntie: Door het gebruik van code kunnen we sneller en efficiënter infrastructuur configuraties beheren. We kunnen ook snel wijzigingen aanbrengen in de code, in plaats van handmatig wijzigingen aan te brengen via een webconsole of terminal.
  • Versiebeheer: Door de infrastructuur configuratie te beheren via code, kunnen we gebruikmaken van versiebeheer en samenwerken met andere teamleden. We kunnen wijzigingen in de infrastructuur configuratie bijhouden en terugdraaien indien nodig.
  • Herbruikbaarheid: Terraform stelt ons in staat om code te hergebruiken, wat het beheer van complexe infrastructuur configuraties vereenvoudigt.
  • Minimalisering van risico's: Terraform minimaliseert het risico op menselijke fouten, aangezien we werken met code in plaats van handmatig werken via een webconsole of terminal.

Uitdagingen bij het werken met Terraform

Hoewel Terraform vele voordelen biedt, zijn er ook enkele uitdagingen bij het werken met Terraform. Enkele van deze uitdagingen zijn:

  • Complexiteit: Het beheren van complexe infrastructuur configuraties kan uitdagend zijn met Terraform. Het is belangrijk om de code zo goed mogelijk te structureren en te documenteren om de complexiteit te minimaliseren.
  • Tools en integraties: Terraform vereist vaak de integratie met andere tools en services, wat extra werk en configuratie vereist.
  • Foutopsporing: Foutmeldingen kunnen soms complex/ingewikkeld zijn, vooral als je niet bekend bent met het Terraform-ecosysteem. Maar door ervaring op te doen en kennis te vergaren, kunnen deze uitdagingen worden overwonnen.

Terraform in de praktijk

Bij de klant gebruiken we Terraform voor het beheer van verschillende aspecten van de infrastructuur op Google Cloud Platform, waaronder alerts.

Alert-configuratie via Terraform

Om een voorbeeld te geven van hoe we Terraform gebruiken, zal ik hieronder een vereenvoudigd voorbeeld laten zien van hoe we alerts beheren via Terraform. Dit voorbeeld maakt gebruik van Stackdriver als monitoringtool.

resource "google_monitoring_notification_channel" "email" {
  display_name = "My email channel"
  type         = "email"
  labels = {
    email_address = "my-email@example.com"
  }
}

resource "google_monitoring_alert_policy" "alert_policy" {
  display_name  = "High CPU usage - Alert Policy"
  combiner      = "OR"

  conditions {
    display_name = "High CPU usage"
    condition_threshold {
      filter      = "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" AND resource.type=\"gce_instance\""
      duration    = "60s"
      comparison  = "COMPARISON_GT"
      threshold_value = "0.8"
      trigger {
        count = 1
      }
    }
  }

  notification_channels = [google_monitoring_notification_channel.channel.name]
}

In dit voorbeeld gebruiken we Terraform om een email notificatie channel te maken en een alert policy te definiëren op basis van hoge CPU-gebruik voor alle VM's die draaien binnen GCP. Wanneer het CPU-gebruik wordt overschreden (in dit geval 80%) voor een duur van 1 minuut, wordt er automatisch een email verzonden naar de opgegeven channel.

Hopelijk heeft dit voorbeeld je een idee gegeven van hoe krachtig Terraform kan zijn voor infrastructuurbeheer via code.