Bestehende ilert-Ressourcen in Terraform importieren
Dieser ausführliche Leitfaden hilft Ihnen dabei, Ihre aktuellen Incident Management-Konfigurationen über ilert in Terraform zu integrieren. Hier finden Sie eine Schritt-für-Schritt-Anleitung für den Import Ihrer bestehenden ilert-Ressourcen in Ihr Infrastructure as Code-Projekt sowie Best Practices unserer Programmierer, um Konsistenz in Ihrer Infrastruktur und Ihren Incident-Management-Prozessen zu gewährleisten.
Falls Sie noch nicht mit der Einführung von IaC in Ihrem Unternehmen begonnen haben, empfehlen wir, mit unserer Übersicht über den Terraform-Provider zu starten.
Anwendungsfälle
Meist werden diese Schritte notwendig, wenn Nutzer der ilert Incident-Management-Plattform zuerst nur mit der Benutzeroberfläche arbeiten und dann später ihre bereits eingerichtete Konfiguration in ein Infrastructure as Code (IaC) System integrieren möchten.
Die ilert-Benutzeroberfläche ist in der Regel benutzerfreundlicher und intuitiver, was es Technikern ermöglicht, Ressourcen wie Alarmierungs-Richtlinien oder Dienstpläne schneller zu erstellen und zu konfigurieren. Beispielsweise ist es beim Ausprobieren verschiedener Einstellungen oder bei kurzfristigen Änderungen oft schneller und einfacher, die Benutzeroberfläche zu verwenden, als Terraform-Code zu schreiben und anzuwenden.
Auf der anderen Seite bevorzugen Programmierer, sobald eine Ressourcenkonfiguration stabil und gut verstanden ist, diese in Terraform zu coden, um eine bessere Konsistenz, Versionskontrolle und Automatisierung in verschiedenen Umgebungen zu gewährleisten.
Selbst Unternehmen, die ilert seit Jahren mit IaC nutzen, verwenden oftmals eine Kombination aus der ilert-Benutzeroberfläche und Terraform, wobei Faktoren wie Benutzerfreundlichkeit, Dringlichkeit, Komplexität des Ressourcenmanagements und dem Erfahrungsstand des Teams mit Terraform eine Rolle spielen. Der hybride Ansatz ermöglicht Flexibilität während des Setups oder wenn manuelle Eingriffe erforderlich sind, während Terraform für langfristige Konsistenz und Automatisierung bevorzugt wird.
Es ist daher völlig in Ordnung, wenn nicht alle Ihre ilert-Ressourcen bereits Teil Ihres Terraform-Projekts sind. Das Importieren vorhandener Ressourcen in ein IaC-Projekt kann jedoch etwas knifflig sein. Häufige Probleme sind Duplikate (neu erstellte Ressourcen) in Terraform anstelle des Imports vorhandener Ressourcen oder Fehler wie:
Error: Bad request: api respond with status code: 400, error code: ERROR, message: The email '[example@example.com]' is already used by user 1234567
So können Sie bestehende ilert-Ressourcen einfach importieren und diese Probleme vermeiden:
1: Identifizieren Sie die ID der ilert-Ressource, die Sie importieren möchten
Der erste Schritt zum Importieren einer in der ilert-Oberfläche erstellten Alarmierungsquelle (Alert Source) in Terraform besteht darin, ihre eindeutige ID zu suchen. Dies können Sie direkt im User Interface oder über die API machen.
Methode 1: Ressourcen-ID über die ilert-Benutzeroberfläche suchen
- Melden Sie sich in Ihrem ilert-Konto an und navigieren Sie im oberen Menü zu "Alarmquellen".
- Suchen Sie die Alarmierungsquelle, die Sie importieren möchten, in der Liste oder verwenden Sie das Suchfeld.
- Klicken Sie auf den Namen der Alert Source, um ihre Details anzuzeigen. Navigieren Sie dann zur URL: https://example.ilert.com/source/view?id=1234567. Kopieren Sie die Zahlen am Ende; dies ist die ID, die Sie benötigen.
Methode 2: Ressourcen-ID über die API feststellen
- Stellen Sie sicher, dass Sie einen API-Schlüssel haben, der in den Einstellungen Ihres ilert-Kontos unter dem Abschnitt "API" generiert werden kann.
- Führen Sie eine
GET
-Anfrage an die ilert-API aus:GET
https://api.ilert.com/api/v1/alert-sources
- Die API-Antwort ist im JSON-Format und enthält alle Details der Alarmierungsquellen, einschließlich ihrer IDs. Suchen Sie nach dem Feld "
id
".
2: Einrichten eines Terraform-Blocks
In Terraform bezieht sich ein „Block“ auf einen Code-Abschnitt, der ein spezifisches Konfigurationselement definiert. Blöcke sind die Bausteine in Terraform-Konfigurationsdateien. Jeder Block beginnt normalerweise mit einem Keyword, das angibt, welchen Ressourcentyp oder welche Einstellung Sie konfigurieren, gefolgt von den Details dieser Konfiguration in geschweiften Klammern {}.
In Ihrer Terraform-Konfigurationsdatei (z. B. main.tf
) würden Sie einen Ressourcenblock für die Alarmierungsquelle definieren.
3: Terraform-Import durchführen
Navigieren Sie in Ihrem Terminal oder der Kommandozeile zu dem Verzeichnis, das Ihre Terraform-Konfigurationsdateien enthält. Führen Sie dann den folgenden Befehl aus:
terraform import ilert_alert_source.example_alert_source <ALERT_SOURCE_ID>
"ilert_alert_source.example_alert_source
" bezieht sich auf die Terraform-Ressource, die Sie in Ihrer ".tf
"-Datei definiert haben. Ersetzen Sie <ALERT_SOURCE_ID>
durch die tatsächliche ID der Alarmierungsquelle in ilert, die Sie zuvor notiert haben.
Wichtig: In 99 % der Fälle sind die Import Keys (identifiers) identisch mit der ID der Einheit. Es kann jedoch manchmal Abweichungen geben. Die Import Description finden Sie in der ilert-Dokumentation zum Terraform Provider am Ende jeder Ressource.
4: Konfiguration abschließen
Nachdem Sie den Import durchgeführt haben, erkennt Terraform die bestehende Alarmierungsquelle. Allerdings enthält die Konfigurationsdatei möglicherweise noch nicht alle Details.
Führen Sie einen "terraform plan
" aus, um zu sehen, welche Informationen genau Terraform über die importierte Ressource erkennt. Dieser Befehl zeigt Ihnen den aktuellen Zustand der Ressource im Vergleich zu Ihrer Konfiguration.
Aktualisieren Sie den Ressourcenblock in Ihrer .tf
-Datei basierend auf dem Ergebnis des terraform plan
mit den entsprechenden Konfigurationen.
Indem Sie diese Schritte befolgen, können Sie erfolgreich eine bestehende ilert Alarmierungsquelle in Terraform importieren und sie als Teil Ihrer Infrastructure as Code (IaC)-Einrichtung verwalten. Dieser Prozess trägt zur Konsistenz bei, erleichtert Updates und integriert die Alarmierungsquelle in Ihr version-controlled Infrastructure Management.
Best Practices und Empfehlungen
Sollte man alle ilert-Entities über Terraform generieren? Wie automatisieren andere Teams die Einrichtung und Konfiguration ihrer Incident-Management-Workflows innerhalb eines IaC-Systems? Diese Fragen haben wir unserem CTO, Christian, gestellt.
„Das hängt weitgehend von der Struktur Ihres Unternehmens ab.
Wenn Sie ein zentrales Ops-Team haben, das Aufgaben wie User und Team Synchronization (über Terraform, API, SSO-Provisionierung usw.) übernimmt, könnten Sie theoretisch auch erwägen, dieses Team alle anderen Ressourcen verwalten zu lassen, insbesondere Richtlinien, Alert Sources und Alert Actions.
Wir raten jedoch davon ab, wenn Sie mit unabhängigen Reaktionsteams arbeiten. Unserer Meinung nach ist es am Besten, wenn teamrelevante Ressourcen von den Teammitgliedern selbst verwaltet werden. In größeren Organisationen sehen wir auch Teams mit DevOps Skills, die dies individuell durch ihre eigenen Terraform-Konfigurationen verwalten, andere Teams nutzen ausschließlich die ilert-Benutzeroberfläche.
In Fällen, in denen die Reaktionsteams nichts direkt mit den Ressourcen zu tun haben und sich nur mit Alarmierungen und Störungen beschäftigen, oder in Organisationen, in denen die Anzahl der Alarmierungsquellen überschaubar ist, sehen wir auch Kunden, die vollständige Terraform-Konfigurationen für alle Ressourcen in Ihrem Account verwenden.
Es gibt sogar Setups, bei denen Ops-Teams das ilert-Onboarding vollständig automatisiert haben, beginnend mit der Zuweisung der richtigen Eskalationsrichtlinie zu jeder Alarmierungsquelle, zum Beispiel auf Grundlage von Prometheus-Labels. Andere DevOps-Teams reichen Pull-Requests an das Terraform-Repository ein, um sich selbstständig über GitHub-Aktionen zu provisionieren.
Ich persönlich glaube, dass auch zentrale Ops-Teams davon profitieren, wenn Reaktionsteams die Verantwortung für ihre eigenen Alarmierungsquellen und Services übernehmen, da dies zu einer stärkeren Auseinandersetzung mit der Plattform und in Folge zu besseren Workflows und schnelleren Reaktionszeiten führt.“