Wie man ein CDN mit Terraform verwaltet

Terraform ermöglicht Ihnen die Konfiguration und Verwaltung Ihrer Infrastruktur durch die Erstellung von Konfigurationsdateien. Vor ein paar Monaten haben wir unseren eigenen Terraform-Provider gestartet und ein Material veröffentlicht, wie man damit die Gcore Cloud-Ressourcen verwalten kann.

Jetzt kann man Terraform verwenden, um nicht nur die Cloud, sondern auch das CDN zu verwalten. Wir erzählen Ihnen nun wie.

Ein paar Worte über Terraform

Terraform ist ein Open-Source-Tool, das auf dem Prinzip „Infrastruktur als Code“ (Infrastructure as Code) basiert. Es erlaubt Ihnen, die gesamte Infrastruktur mit einem Satz von Konfigurationsdateien zu beschreiben und damit die Regeln zu definieren, wie alles eingerichtet werden soll.

  • Sie schreiben den Code.
  • Terraform macht Aufrufe an die API und bringt alles in den beschriebenen Zustand.
Wie man ein CDN mit Terraform verwaltet

Die Programmiersprache in Terraform ist die HashiCorp Configuration Language, aber Sie können auch JSON verwenden, wenn Sie möchten.

Vorteile der Verwaltung von CDN durch Terraform:

  • Von einem privaten Benutzerkonto müssen Sie keine Ressourcen erstellen und Einstellungen manuell vornehmen.
  • Terraform basiert auf dem Konzept einer unveränderlichen Infrastruktur—wenn Sie den Code ändern, erstellen Sie eine neue Konfiguration. Das bedeutet, dass alle Änderungen sehr einfach zurückgenommen werden können, indem die vorherige Version ausgewählt wird.
  • Um ein CDN zu verwalten, müssen Sie nur angeben, wie es funktionieren soll. Und Terraform bestimmt selbst den besten Weg, das Netzwerk in diesen Zustand zu bringen.

Wie man mit Terraform im Gcore CDN arbeitet

Mit unserem Terraform-Provider können Sie Folgendes verwalten:

  • Originsgruppen
  • CDN-Ressourcen
  • Regeln
  • Benutzerzertifikate

Sie können Einstellungen für Ressourcen und Regeln festlegen. Derzeit in Terraform verfügbar:

  • Caching (edge_cache_settings) — mit dieser Option können Sie die Verweildauer von Inhalten im Cache von CDN-Servern einstellen.
  • Host-Header (host_header) — legt einen bestimmten Header fest, den CDN-Server verwenden, wenn Inhalte von einer Origin angefordert werden. Wenn diese Option nicht gesetzt ist, ist der Wert des Host-Headers derselbe wie der erste CNAME.

Sie können der Ressource auch ein benutzerdefiniertes Zertifikat hinzufügen.

Wie ist Terraform zu installieren und zu konfigurieren

Um Terraform zu installieren, laden Sie die Distribution für Ihr Betriebssystem herunter, entpacken Sie die Binärdatei aus dem Archiv und schreiben Sie diese in den Pfad. Auf der Website von HashiCorp finden Sie detaillierte Anweisungen zur Installation für das jeweilige Betriebssystem.

Als nächstes müssen Sie eine Konfigurationsdatei mit der Erweiterung .tf erstellen. In solchen Dateien werden Sie den Code schreiben.

Damit Terraform mit den Diensten von Gcore arbeiten kann, müssen Sie den Provider angeben und dessen Einstellungen festlegen.

terraform {
  required_version = ">= 0.13.0"
  required_providers {
    gcore = {
      source = "g-core/gcorelabs"
      version = "~>0.1.17"
    }
  }
}

Wenn Sie Terraform nur für die Arbeit mit CDNs verwenden wollen, sollte der folgende Teil des Codes wie folgt aussehen:

provider gcore {
  user_name = "test"
  password = "test"
  gcore_platform = "https://api.gcore.com/id"
  gcore_cdn_api = "https://api.gcore.com/id"
}

Und wenn Sie sowohl CDN als auch Cloud mit Terraform verwalten wollen, wäre der Code wie folgt:

provider gcore {
  user_name = "test"
  password = "test"
  gcore_platform = "https://api.gcore.com/id"
  gcore_api = "https://api.gcore.com/cloud"
  gcore_cdn_api = "https://api.gcore.com/id"
}

Danach müssen Sie den Befehl terraform init ausführen lassen. Dadurch wird der Provider initialisiert und der Satz von Modulen heruntergeladen, die für die Arbeit mit unseren Ressourcen benötigt werden.

Von dort aus können Sie Ressourcen erstellen und verschiedene Befehle ausführen lassen.

Wie das Terraform zu verwenden ist

Nach dem Einrichten des Terraform Providers können Sie Ihre Ressourcen konfigurieren und Regeln festlegen.

Originsgruppen

So wird z.B. eine Originsgruppe erstellt:

resource "gcore_cdn_origingroup" "origin_group_1" {
  name = "origin_group_1"
  use_next = true
  origin {
    source = "example.com"
    enabled = false
  }
  origin {
    source = "mirror.example.com"
    enabled = true
    backup = false
  }
}

CDN-Ressourcen

So würde der Code zum Erstellen einer CDN-Ressource aussehen:

resource "gcore_cdn_resource" "cdn_example_com" {
  cname = "cdn.example.com"
  origin_group = gcore_cdn_origingroup.origin_group_1.id
  origin_protocol = "MATCH"
  secondary_hostnames = ["cdn2.example.com"]
}

Im Feld origin_protocol geben Sie an, welches Protokoll die CDN-Server bei der Abfrage von Inhalten von der c verwenden sollen. Zusätzlich zu MATCH können Sie in diesem Feld HTTPS oder HTTP angeben.

Sie können der Ressource eine der verfügbaren Optionen hinzufügen: Caching (edge_cache_settings) oder Host-Header (host_header).

So würde zum Beispiel die Ressourcenbeschreibung aussehen, wenn die Option „Host-Header“ aktiviert wäre:

resource "gcore_cdn_resource" "cdn_example_com" {
  cname = "cdn.example.com"
  origin_group = gcore_cdn_origingroup.origin_group_1.id
  origin_protocol = "MATCH"
  secondary_hostnames = ["cdn2.example.com"]
  options {
    host_header {
      enabled = true
      value = "mirror.example.com"
    }
  }
}

Benutzer-Zertifikate

SSL-Zertifikate werden wie folgt erstellt:

variable "cert" {
  type = string
  sensitive = true
}
variable "private_key" {
  type = string
  sensitive = true
}
resource "gcore_cdn_sslcert" "cdnopt_cert" {
  name = "Test cert for cdnopt_bookatest_by"
  cert = var.cert
  private_key = var.private_key
}

In das Feld name muss man den Namen des SSL-Zertifikats schreiben. Dieser muss einzigartig sein. In dem Feld cert wird der öffentliche Teil des SSL-Zertifikats, in private_key der private Schlüssel des Zertifikats angegeben.

Um der Ressource ein Zertifikat hinzuzufügen, benötigen Sie den folgenden Code:

resource "gcore_cdn_resource" "cdn_example_com" {
  cname = "cdn.example.com"
  origin_group = gcore_cdn_origingroup.origin_group_1.id
  origin_protocol = "MATCH"
  secondary_hostnames = ["cdn2.example.com"]
  ssl_enabled = true
  ssl_data = gcore_cdn_sslcert.cdnopt_cert.id
}

Regeln

Die Regeln werden festgelegt, nachdem alle Ressourcen und Originsgruppen erstellt worden sind.

Ein Beispiel des Codes:

resource "gcore_cdn_rule" "cdn_example_com_rule_1" {
  resource_id = gcore_cdn_resource.cdn_example_com.id
  name = "All images"
  rule = "/folder/images/*.png"
  rule_type = 0
}

Im Feld name geben Sie den Namen der Regel an, im Feld rule geben Sie das Muster an, welches bestimmt, wann die Regel ausgelöst wird.

Wie bei den Ressourcen können Sie auch für Regeln Caching- oder Host-Header-Optionen festlegen.

Befehle

Wenn Sie die gesamte Infrastruktur beschrieben haben, benötigen Sie zwei Befehle:

  • terraform plan wird Ihnen zeigen, welche Änderungen Terraform demnächst vornimmt. Wenn Sie Fehler im Code gemacht haben, wird Terraform Sie darauf hinweisen.
  • terraform apply wird Änderungen an der Infrastruktur vornehmen. Verwenden Sie es nach der Überprüfung und Korrektur von Fehlern. Wenn Sie den Befehl eingeben, werden Sie von Terraform aufgefordert, die Aktion zu bestätigen—geben Sie „yes“ ein.

Weitere nützliche Befehle und Tools können Sie in unserem letzten Artikel über Terraform nachlesen. Sie können diese sowohl für die Arbeit mit dem Cloud als auch für das CDN-Management verwenden.

Mehr Details über die Arbeit mit unserem Terraform-Provider finden Sie in der Dokumentation.

Sind Sie noch nicht an das Gcore CDN angeschlossen? Nutzen Sie ein leistungsfähiges und zuverlässiges Netzwerk, um Ihre umfangreichen Inhalte schnell und sicher überall auf der Welt zu übertragen.

Schließen Sie Ihr CDN kostenlos an oder lassen Sie sich von unseren Experten beraten, um die beste Lösung für Ihre Aufgaben zu finden.

Mehr über Gcore CDN

Kostenlose Beratung

Melden Sie sich an, um die neuesten Updates, Nachrichten und Funktionen zu erhalten.

Wir respektieren Ihren Posteingang und bemühen uns, Spam zu vermeiden