Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zum Anmelden für einen kostenlosen Account finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Wenn Sie Ihre Übung abgeschlossen haben, ersetzen Sie diese Werte durch die Werte, die für Ihre Cloud-Umgebung spezifisch sind.
Datenbankmanagement für Oracle Cloud-Datenbanken mit Terraform aktivieren
Einführung
Oracle Cloud Infrastructure (OCI) Database Management ist ein nützliches Tool für die Performancediagnose, mit dem Sie Ihre Oracle-Datenbank überwachen und verwalten können. Wenn Sie eine Oracle Cloud-Datenbank in einem Datenbanksystem erstellen, ist die Option "Datenbankmanagement" nicht standardmäßig aktiviert, da sie auf zusätzlichen Ressourcen und Aktionen basiert, unabhängig vom Datenbankerstellungsprozess.
In diesem Tutorial wird ein Beispiel für das Erstellen von Terraform-Code zum Aktivieren oder Deaktivieren von Datenbankmanagement auf Codeebene im Rahmen einer Terraform-Automatisierung beschrieben.
Die Option "Datenbankmanagement" für Oracle Cloud-Datenbanken ist auf der Seite "Datenbankinformationen" unter "Verknüpfte Services" verfügbar. Sie können sie auch über die UI aktivieren. Es gibt mehrere Schritte und Voraussetzungen, damit dieser Prozess erfolgreich ist und über alle erforderlichen Informationen verfügt. Weitere Informationen zu den Schritten zum Aktivieren der Datenbankverwaltung über die Benutzeroberfläche finden Sie unter den Links im Abschnitt "Zugehörige Links" am Ende dieses Tutorials.
Ziele
Angenommen, Sie haben einen Code, der eine Oracle Cloud-Datenbank, eine Einzelinstanz oder RAC in einem privaten Subnetz erstellt. In dieser Phase ist Datenbankmanagement nicht aktiviert, und es ist kein verfügbarer Parameter vorhanden, der dies direkt ausführt. Sie müssen zusätzliche Ressourcen erstellen, Berechtigungen auf OCI-Ebene und Datenbankebene erteilen und Informationen aus der vorhandenen Datenbank abrufen, die bei der Aktivierung von Datenbankmanagement verwendet werden sollen. All dies sollte als Ergänzung zu demselben Code erfolgen, der die Datenbank erstellt, ohne hartcodierte Werte. Die folgenden Schritte müssen ausgeführt werden:
- Legen Sie das DBSNMP-Benutzerkennwort und die Berechtigungen in der Datenbank fest.
- Monitoringbenutzerkennwort als Secret in OCI Vault speichern
- IAM-Berechtigungen dem Database Management-Service zuweisen
- Weisen Sie Ihrem OCI-Benutzer IAM-Berechtigungen zu
- Erstellen Sie einen privaten Endpunkt in Ihrem VCN
- Netzwerkverkehr zwischen dem privaten Endpunkt und Ihren Cloud-Datenbanken zulassen
- Database Management für Ihre Cloud-Datenbank aktivieren
Voraussetzungen
- Kenntnisse der Konzepte Terraform und Oracle Database
- Benutzerberechtigungen zum Erstellen von Policys, Vaults und Oracle Cloud-Datenbanken. Wenn der Benutzer diese Berechtigungen nicht hat, kann ein Mandantenadministrator diese Aktionen ausführen.
- Terraform auf dem Rechner installiert.
Aufgabe 1: Private IP des Datenbankknotens (oder eines der RAC-Knoten) abrufen
Es ist kein Attribut vorhanden, das die private IP der Datenbankknoten bereitstellt. Sie müssen sie daher indirekt finden. Eine Möglichkeit besteht darin, die folgenden 2 Schritte auszuführen:
-
Verwenden Sie die Terraform-Datenquelle oci_database_db_nodes, die das Attribut vnic_id bereitstellt.
-
Verwenden Sie diese VNIC-OCID mit der Datenquelle oci_core_private_ips, die mehrere private IPs zurückgibt. Sie müssen das Attribut is_primary = true isolieren, also die primäre private IP der VNIC. Beispiel: Erstellen Sie eine lokale Variable wie folgt:
locals { node_ip = join(",",[for idx in data.oci_core_private_ips.this.private_ips: idx.ip_address if idx.is_primary == true]) }
Aufgabe 2: Verbindung zur privaten IP herstellen, um DBSNMP-bezogene Skripte auszuführen
-
Um eine Verbindung zur Datenbank mit der privaten IP über SSH ohne Client herzustellen, müssen Sie einen Bastionhost verwenden. Die Verbindung erfolgt als opc-Benutzer. Sie können eine Nullressource verwenden, um eine Verbindung über den Bastionhost mit SSH zu definieren. Wenn Sie bastion_host im Verbindungsblock festlegen, stellt der Provisioning-Prozess zuerst eine Verbindung zu bastion_host her und stellt dann eine Verbindung von dort zu host(DB-Knoten) her.
-
Führen Sie anschließend mit dem Provisioninger remote-exec ein Skript aus, mit dem der opc-Benutzer zu oracle gewechselt und eine Verbindung zu sqlplus als sysdba hergestellt wird. Das Shell-Skript kann dann ein sekundäres SQL-Skript aufrufen, um die erforderlichen Berechtigungsanweisungen auszuführen. Außerdem kann das DBSNMP-Konto entsperrt und das zugehörige Kennwort geändert werden. Beispiele für Shell- und SQL-Skripte finden Sie unter files.zip.
-
Im Folgenden finden Sie ein Beispiel für die Suche nach diesem Schritt durch den Code:
resource "null_resource" "set_dbsnmp_pw_and_privs" { # connect to RAC node using the bastion connection { bastion_host = var.bastion_public_ip type = "ssh" user = "opc" host = local.node_ip private_key = file(var.ssh_private_key) agent = "false" timeout = "5m" } # copy sql scrip to RAC node provisioner "file" { source = "${path.root}/userdata/dbsnmp.sql" destination = "/tmp/dbsnmp.sql" } # copy shell scrip to RAC node provisioner "file" { source = "${path.root}/userdata/dbsnmp.sql" destination = "/tmp/dbsnmp.sh" } # run sqlplus script as oracle OS user from shell script provisioner "remote-exec" { inline = [ "chmod 777 /tmp/dbsnmp.sql", "chmod 777 /tmp/dbsnmp.sh", "sudo su -c '/tmp/dbsnmp.sh' oracle" ] } }
Aufgabe 3: Vault, Masterschlüssel und Secret für das DBSNMP-Kennwort erstellen
-
Mit der Terraform-Ressource oci_kms_vault können Sie einen Vault erstellen.
-
Mit der Terraform-Ressource oci_kms_key können Sie einen neuen Masterverschlüsselungsschlüssel in diesem Vault erstellen.
-
Verwenden Sie die Terraform-Ressource oci_vault_secret, um ein Secret für das DBSNMP-Kennwort zu erstellen, das mit dem obigen Skript festgelegt wurde.
Aufgabe 4: Policy für Database Management-Service und OCI-Benutzer erstellen
Erstellen Sie Policys mit der Ressource oci_identity_policy:
-
Erstellen Sie eine Policy, und nehmen Sie diese Anweisungen auf, um dem Database Management-Service IAM-Berechtigungen zu erteilen.
statements = [ "Allow service dpd to manage objects in compartment <compartment>", "Allow service dpd to read secret-family in compartment <compartment>" ]
-
Erstellen Sie eine Policy für den OCI-Benutzer, oder nehmen Sie diese Anweisungen in eine bereits vorhandene Policy auf.
statements = [ "Allow group <user_group> to manage dbmgmt-family in compartment <compartment>" "Allow group <user_group> to read database-family in compartment <compartment>" "Allow group <user_group> to manage vnics in compartment <compartment>" "Allow group <user_group> to use subnets in compartment <compartment>" "Allow group <user_group> to use network-security-groups in compartment <compartment>" "Allow group <user_group> to use security-lists in compartment <compartment>" "Allow group <user_group> to manage secret-family in compartment <compartment>" "Allow group <user_group> to read buckets in compartment <compartment>" ]
Aufgabe 5: Privaten Endpunkt in Ihrem VCN erstellen
-
Um einen privaten Endpunkt für das Datenbankmanagement zu erstellen, verwenden Sie die Terraform-Ressource oci_database_management_db_management_private_endpoint.
Hinweis: Wenn Sie es in demselben privaten Subnetz wie die Oracle Cloud-Datenbank erstellen, müssen Sie das Netzwerk nicht weiter konfigurieren, damit Sie Aufgabe 7 überspringen können.
Aufgabe 6: Netzwerk so konfigurieren, dass Traffic zwischen dem privaten Endpunkt und der Cloud-Datenbank zulässig ist
- Wenn der private Endpunkt in einem anderen Subnetz als der in der Datenbank erstellt wird, fügen Sie mit oci_core_network_security_group_security_rule einer vorhandenen Netzwerksicherheitsgruppe Regeln hinzu.
Aufgabe 7: Datenbankmanagement in der Cloud-Datenbank aktivieren
Um die Datenbankverwaltung zu aktivieren, müssen Sie die Terraform-Ressource oci_database_cloud_database_management verwenden. Es muss mit einigen Informationen aufgefüllt werden, die in den vorherigen Schritten erstellt wurden.
-
Der private Endpunkt muss aus der in Aufgabe 5 erstellten Ressource abgerufen werden.
-
Es ist keine Datenquelle vorhanden, um den Servicenamen direkt als Attribut abzurufen. Das Format des Servicenamens lautet Database Unique Name.Host Domain Name. Da das Format des eindeutigen Datenbanknamens Automatisch generierte Zeichenfolge für Datenbankschlüssel Name_Region lautet, müssen Sie den Service indirekt abrufen.
-
Erstellen Sie zunächst eine Datenquelle oci_database_databases. Diese Datenquelle gibt das Attribut connection_strings zurück, das alle Verbindungszeichenfolgen auflistet.
-
Wenden Sie verschiedene Terraform-Funktionen auf dieses Ergebnis an, um den Servicenamen schließlich als Zeichenfolge zu isolieren.
-
Nachdem diese Schritte als Teil des Codes ausgeführt wurden und das Datenbankmanagement für die jeweilige Oracle Cloud-Datenbank aktiviert ist, ist die Schaltfläche "Performancehub" in der OCI-Konsole verfügbar, und die Metriken werden auf der Seite "Metriken" aufgefüllt.
-
Wenn Sie denselben Terraform-Code mit der Option "Zerstören" verwenden, kann die Option "Datenbankmanagement" deaktiviert werden.
Verwandte Links
Bestätigungen
Autor - Adina Nicolescu (Senior Cloud Engineer)
Weitere Lernressourcen
Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube-Kanal zu. Besuchen Sie außerdem die Website education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.
Produktdokumentation finden Sie im Oracle Help Center.
Enable Database Management for Oracle Cloud databases using Terraform
F79854-01
March 2023
Copyright © 2023, Oracle and/or its affiliates.