X

Technologie - Trends - Tipps&Tricks
in deutscher Sprache

Oracle Autonomous Database mit Terraform bereitstellen

Marcus Schroeder
Master Principal Sales Consultant

Die Oracle Autonomous Database oder kurz Autonomous DB ist eine "Cloud-Only"-Implementierung, die es ermöglicht eine Datenbank schnell, sicher und ohne großen Administrationsaufwand zu erstellen und zu betreiben. Die Nutzung von Hashicorps-Terraform unterstützt das sichere und skalierbare Skripten der Bereitstellung einer oder mehreren Autonomous DBs. Der folgende Artikel gibt einen Überblick über die notwendigen Schritte und zeigt anhand eines Praxis-Beispiels wie die Bereitstellung durchzuführen ist.


Warum Terraform?

Agilität ist eines der Hauptargumente für Cloud-Computing. Das schnelle Hoch- und Runter-Skalieren von Applikations-Umgebungen funktioniert am Effektivsten mittels Skripten zur automatischer Bereitstellung, Änderung und Löschung. Zusätzlich werden in modernen Cloud-Anwendungen häufig DevOps-Ansätze verfolgt. Das heißt, neben der Bereitstellung des Programm-Codes werden auch die benötigten Laufzeitumgebungen, wie Web-Server, Datenbanken etc. im Code erzeugt. Um Agilität und DevOps im Enterprise Cloud Umfeld verwenden zu können, gibt es weitere Anforderungen wie Source-Code-Verwaltung, Erweiterbarkeit, Einhaltung von Richtlinien und ähnliches. Alle diese Anforderungen können mit Terraform der Firma Hashicorp abgedeckt werden. Hashicorp ist ein unabhängiges Unternehmen und unterstützt alle gängigen Cloud-und Automatisierungs-Anbieter. Typische Anwendungsfälle für Terraform sind: Infrastruktur as Code, Multi-Cloud und Self-Service-Infrastructure. 
Infrastructure as Code ist ein typisches DevOps-Cloud-Szenario, in dem Programmcode inklusive Infrastruktur bereitgestellt wird. Der Multi-Cloud-Ansatz ermöglicht es aus einer zentralen Bereitstellungs-Umgebung, Applikations-Komponenten bei verschiedenen Cloud-Anbietern automatisiert bereit zu stellen. In einer Self-Service-Infrastructure werden Cloud-Komponenten aus einem Bestellportal durch den Verbraucher selbst angefordert und erstellt.

Übersicht der Bereitstellung Autonomous Database

Im ersten Schritt wird die Terraform-Laufzeitumgebung installiert und konfiguriert. Anschließend wird die gewünschte Ressourcen-Konfiguration beschrieben. In unserem Fall ist es Oracle Autonomous Database, das mit wenigen Parametern definiert wird. Die Bereitstellung erfolgt durch Starten des Terraform-Skripts, das die Cloud API der Oracle Cloud verwendet, um alle Einzelkomponenten schnell und in der richtigen Reihenfolge bereitzustellen. Bei der Erstellung kommuniziert der Client auf dem Terraform installiert wurde direkt mit der Oracle Cloud Infrastructure API. Die Terraform-Client-Software kann innerhalb oder außerhalb der Oracle Cloud installiert werden.

Hinweis: Sie können beim Erstellen einer neuen Compute-Instanz in der Oracle Cloud den Image-Typen "Oracle Cloud Developer Image" auswählen. Auf diesem Image ist Terraform bereits vorinstalliert. 

Die Bereitstellung im Detail

Im ersten Schritt wird die Laufzeitumgebung für Terraform installiert und konfiguriert. Diese Schritte sind in der Dokumentation oder in einem meiner früheren Blog-Einträge "Terraform - Automatische Erstellung einer DBaaS-Instanz in der Oracle Cloud Infrastructure" ausführlich beschrieben. 
In einem Verzeichnis erzeugt man im nächsten Schritt eine Datei mit der Bezeichnung autonomousDatabase.tf (kann man natürlich auch anders bezeichnen, allerdings muss die Endung .tf lauten). Anschließend kopiert man sich folgendes Programm-Listing in die Datei. 

resource "oci_database_autonomous_database" "test_autonomous_database" {
    admin_password = "<hierDasAdminPasswort"
    compartment_id = "<hierDieCompartmentID>"
    cpu_core_count = "1"
    data_storage_size_in_tbs = "1"
    db_name = "BUADB"
}

Zu den Parametern:

  • admin_password - Das Passwort des Datenbank-Adminstrators
  • compartment_id - Die eindeutige Oracle Cloud Infrastruktur ID des gewünschten Compartments (hier ist eine Beschreibung, wie diese ermittelt wird)
  • cpu_core_count - Anzahl der gewünschten Cores
  • data_storage_size_in_tbs - Größe des Datenbank-Storage
  • db_name - Der Name der Datenbank

Ohne Angabe des Workload-Typs wird als Standard Transaction Processing ausgewählt. Der Workload-Typ ist ein optionaler Parameter mit der Bezeichnung db_workload="OLTP" für Autonomous Transaction Processing oder db_workload="DW" für Autonomous Data Warehouse. Das gilt auch für den Lizenz-Typ, ohne Angabe wird Bring Your Own License verwendet, bei License Included muss der optionale Parameter folgendermaßen aussehen: license_model = "LICENSE_INCLUDED"

Diese eine Datei reicht jedoch nicht aus. Es fehlt noch die Authentifizierung und Autorisierung, dass die Datenbank angelegt werden darf. Dafür legen wir uns eine Datei namens provider.tf an (auch diese Datei kann umbenannt werden, benötigt jedoch die .tf Endung). Nach Anlegen der Datei kopieren wir folgendes Programm-Listing:

provider "oci" {
  region           = "eu-frankfurt-1"
  tenancy_ocid     = "<hierDieTenancyID>"
  user_ocid        = "<hierDieBenutzerID>"
  fingerprint      = "<hierDenFingerprintWert>"
  private_key_path = "<hierPfadZumPrivateKey>"
}

Zu den Parametern:

  • region - Die gewünschte Region in der die Bereitstellung erfolgen soll, in unserem Fall Frankfurt.
  • tenancy_ocid - Die eindeutige Tenancy/Account Oracle Cloud Infrastructure ID oder kurz OCID. Hier ist eine Beschreibung, wie sie ermittelt wird.
  • user_ocid - Die eindeutige Benutzer OCID. Hier ist eine Beschreibung, wie sie ermittelt wird.
  • private_key_path - Der Pfad zu dem Private-Key-File im PEM-Format. Hier ist eine Beschreibung, wie der Schlüssel erzeugt wird.
  • fingerprint - Der Fingerprint des Public-Key-Files, dass in die Oracle Cloud hochgeladen werden muss. Hier ist eine Beschreibung, wie sie ermittelt wird.

Wenn man alle Parameter in den beiden Dateien eingetragen hat initialisiert man im ersten Schritt Terraform mit dem Befehl terraform init. Anschliessend wird mit dem Befehl terraform apply die Erstellung der Autonomous Database Instanz initiiert. Nach ca. 5 Minuten ist die Instanz erstellt. 

Hinweis: Wenn es zu Fehlermeldungen kommt, sind diese recht sprechend und haben in den meisten Fällen mit der Authentifizierung zu tun! In diesem Fall prüfen Sie bitte noch einmal die Parameter in der provider.tf Datei auf ihre Richtigkeit.

Auch Änderungen sind in Terraform kein Problem, wenn Sie zum Beispiel die Anzahl der Cores hoch setzen möchten, ändern Sie diesen Parameter in der autonomousDatabase.tf Datei und initiieren Sie die Änderung mit dem erneuten Aufruf terraform apply.

Das Löschen der Umgebung erfolgt ebenfalls sehr einfach, rufen Sie terraform destroy auf, nach Bestätigung wird die Instanz gelöscht.

Was als nächstes?

Dieses Beispiel ist bewusst sehr einfach gehalten und es gibt eine Reihe von möglichen Erweiterungen. 
Zum Beispiel können die Parameter, die wir in den Dateien angegeben haben auch als Umgebungsvariablen in einer Datei definiert werden.
Die in dem Beispiel verwendeten Parameter stellen eine Minimalkonfiguration dar, es können auch optionale Parameter hinzugefügt werden, um z.B. den Standard-Anzeigenamen zu ändern. 
Es können weitere Komponenten hinzugefügt und Konfigurationen innerhalb der Umgebungen direkt nach Erstellung der Ressourcen durchgeführt werden. Die Kombination von Terraform-Beschreibungen und dem Ressourcen Manager in der Oracle Cloud Infrastructure ermöglicht Ihnen die Planung der Ausführungszeit und das Hinterlegen der Skripte in Ihrem Oracle Cloud-Account. 

Eine Beschreibung, wie diese Erweiterungen implementiert werden, finden Sie auf https://www.terraform.io/docs/providers/oci/index.html . Dort finden Sie eine sehr ausführliche Dokumentation der Funktionalitäten.
Es gibt auch eine Reihe von fertigen Beispielen auf GitHub unter https://github.com/terraform-providers/terraform-provider-oci

Fazit

Dieser Artikel umfasst einen kleinen Ausschnitt der Möglichkeiten, welche mit der Kombination Terraform und Oracle Cloud Infrastructure möglich ist. Wenn es um DevOps, Multi-Cloud oder Self-Service-Applikationen geht, ermöglicht Terraform die bis dato beste Umsetzung der Anforderungen.

 

Be the first to comment

Comments ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.