Globale aktive Tabelle mit Terraform bereitstellen
Mit Terraform können Sie ganz einfach eine globale aktive Tabelle auf OCI bereitstellen.
Terraform ist ein Infrastructure-as-Code-Tool, mit dem Sie Cloud- und On-Premise-Ressourcen sicher und effizient erstellen, ändern und versionieren können. Grundlegende Kenntnisse zu Terraform finden Sie in der kurzen Einführung. Stellen Sie sicher, dass der OCI-Terraform-Provider installiert und konfiguriert für API-Schlüsselauthentifizierung, Instanz-Principal-Autorisierung, Resource Principal-Autorisierung und Sicherheitstokenauthentifizierung ist.
Schritte zum Bereitstellen einer globalen Tabelle
Das folgende terraform-Skript führt Folgendes aus:
- Erstellt die Quelltabelle als Singleton-Tabelle, wenn sie nicht vorhanden ist.
- Fügt der Singleton-Tabelle einen Index hinzu.
- Erstellt ein regionales Replikat der Tabelle und macht sie zu einer Global Active-Tabelle.
Schritte:
Schritt 1: Erstellen Sie Terraform-Konfigurationsdateien für die Tabelle "Global Active": Sie müssen die folgenden Konfigurationsdateien zum Erstellen einer Tabelle "Global Active" erstellen.
provider.tf: In dieser Datei geben Sie die OCI-Terraform-Providerdefinition sowie die zugehörigen Variablendefinitionen an. Der OCI-Terraform-Provider erfordert NUR das Argument region. Möglicherweise müssen Sie jedoch zusätzliche Argumente mit Authentifizierungszugangsdaten für einen OCI-Account basierend auf der Authentifizierungsmethode konfigurieren.
Der OCI-Terraform-Provider unterstützt vier Authentifizierungsmethoden: API-Schlüsselauthentifizierung, Instanz-Principal-Autorisierung, Resource-Principal-Autorisierung und Sicherheitstokenauthentifizierung.
Beispiel für provider.tf mit API-Schlüsselauthentifizierung
variable "tenancy_ocid" {
}
variable "user_ocid" {
}
variable "fingerprint" {
}
variable "private_key_path" {
}
variable "region" {
}
provider "oci" {
region = var.region
tenancy_ocid = var.tenancy_ocid
user_ocid = var.user_ocid
fingerprint = var.fingerprint
private_key_path = var.private_key_path
}
Beispiel für provider.tf mit Instanz-Principal-Autorisierung
variable "region" {
}
provider "oci" {
auth = "InstancePrincipal"
region = var.region
}
Beispiel für provider.tf mit Resource Principal-Autorisierung
variable "region" {
}
provider "oci" {
auth = "ResourcePrincipal"
region = var.region
}
Beispiel für provider.tf mit Sicherheitstokenauthentifizierung
variable "region" {
}
variable "config_file_profile" {
}
provider "oci" {
auth = "SecurityToken"
config_file_profile = var.config_file_profile
region = var.region
}
nosql.tf: Ressourcen sind das wichtigste Element der Terraform-Sprache. Terraform erstellt eine Singleton-Tabelle, einen Index und ein Tabellenreplikat als Ressource. In dieser Datei geben Sie die Definition von NoSQL-Terraform-Konfigurationsressourcen für das Erstellen einer Global Active-Tabelle an. Im folgenden Beispiel erstellen Sie eine Tabelle "Global Active", indem Sie ein regionales Replikat dieser Tabelle hinzufügen.
-
Die unten erstellten Ressourcen sind oci_nosql_table, oci_nosql_index.
-
Die Tabellen-DDL-Definition muss
with schema frozenoderwith schema frozen forcein der Singleton-Tabelle enthalten. Weitere Informationen finden Sie unter Globale aktive Tabelle erstellen. -
Die Tabellenlimits der Absendertabelle (Leseeinheit, Schreibeinheit und Speicherkapazität) müssen angegeben werden.
-
Wenn Sie ein regionales Tabellenreplikat hinzufügen, können Sie entweder den Namen der Tabelle oder die OCID der Tabelle angeben. Wenn Sie den Namen der Tabelle angeben, müssen Sie die OCID des Compartments und die Klausel
depends_onangeben, während Sie das regionale Replikat wie unten dargestellt definieren. Wenn Sie die OCID der Tabelle angeben, sind die Klauseldepends_onund die Compartment-OCID optional.
Unter Ressourcensyntax wird beschrieben, wie ein Ressourcenblock in Terraform erstellt wird. Die Syntax des Ressourcenbefehls umfasst den Ressourcentyp oci_nosql_table_replica, bei dem es sich um ein Tabellenreplikat handelt, und den Namen der Ressource, z.B. replica_montreal. Weitere Informationen zum Definieren von Ressourcennamen in einem Terraform-Skript finden Sie unter IDs.
Hinweis: Sie können eine der beiden folgenden Optionen (Option 1 - mit OCID der Tabelle oder Option 2 - mit dem Namen der Tabelle) im Skript nosql.tf verwenden.
#Option 1 of adding a regional replica of the table
resource "oci_nosql_table_replica" "replica_montreal" {
table_name_or_id = oci_nosql_table.mr_test.id
region = "ca-montreal-1"
#Optional
max_read_units = "60"
max_write_units = "60"
}
# Option 2 of adding a regional replica of the table
resource "oci_nosql_table_replica" "replica_toronto" {
compartment_id = var.compartment_ocid
table_name_or_id = "mr_test"
region = "ca-toronto-1"
depends_on = [oci_nosql_table.mr_test]
}
Beispieldatei nosql.tf:
variable "compartment_ocid" {
}
variable "table_ddl_statement" {
default = "CREATE TABLE IF NOT EXISTS mr_test(id INTEGER,
name STRING, info JSON,PRIMARY KEY(id))
using TTL 10 days with schema frozen"
}
#Add index resource "idx_age"
resource "oci_nosql_index" "idx_age" {
table_name_or_id = oci_nosql_table.test_mrtable.id
name = "idx_age"
keys {
column_name = "name"
}
keys {
column_name = "info"
json_path = "age"
json_field_type = "anyatomic"
}
}
resource "oci_nosql_table" "mr_test" {
#Required
compartment_id = var.compartment_ocid
ddl_statement = var.table_ddl_statement
name = "mr_test"
table_limits {
#Required
max_read_units = 51
max_write_units = 51
max_storage_in_gbs = 2
}
}
#add a regional replica
resource "oci_nosql_table_replica" "replica_montreal" {
table_name_or_id = oci_nosql_table.mr_test.id
region = "ca-montreal-1"
#Optional
max_read_units = "60"
max_write_units = "60"
}
Hinweis: Die Definition der Singleton-Tabelle (CREATE TABLE IF NOT EXISTS mr_test...) muss immer im Terraform-Skript enthalten sein, auch wenn die Quelltabelle bereits vorhanden ist. Wenn Sie die CREATE TABLE-Definition aus dem terraform-Skript entfernen, wird die Tabelle aus dem Bereich gelöscht.
terraform.tfvars: In dieser Datei geben Sie die Werte für die erforderlichen OCI-Terraform-Providerargumente basierend auf der Authentifizierungsmethode an.
Beispiel für terraform.tfvars mit API-Schlüsselauthentifizierung:
tenancy_ocid = "<tenancy_your_ocid>"
user_ocid = "<your_user_ocid">
fingerprint = "your_fingerprint>"
private_key_path = "<path_private_key>"
compartment_ocid = "<your_compartment_ocid>"
region = "<name of your region>"
Beispiel für terraform.tfvars mit Instance Principal Authorization:
compartment_ocid = "<your_compartment_ocid>"
region = "<name of your region>"
Beispiel für terraform.tfvars mit Resource Principal Authorization:
compartment_ocid = "<your_compartment_ocid>"
region = "<name of your region>"
Beispiel für terraform.tfvars mit Sicherheitstokenauthentifizierung:
compartment_ocid = "<your_compartment_ocid>"
region = "<name of your region>"
config_file_profile = "PROFILE"
Hinweis: Sie können eine einzige terraform.tf-Datei verwenden, in der die gesamten Konfigurationsdetails hinzugefügt werden können. Es wird jedoch empfohlen, separate Konfigurationsdateien wie oben gezeigt zu verwenden, um die Übersichtlichkeit und einfache Wartung zu gewährleisten.
Schritt 2:Rufen Sie terraform auf, und initialisieren Sie das Setup.
terraform init
Schritt 3: Führen Sie den folgenden Befehl aus, um das Terraform-Skript aufzurufen.
terraform apply
Terraform zeigt den Plan an, der angewendet werden soll, und fordert zur Bestätigung auf (siehe unten).
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Nach der Bestätigung wird die Singleton-Tabelle erstellt, und ihr wird ein Index hinzugefügt. Anschließend wird ein regionales Replikat der Tabelle erstellt, das die Singleton-Tabelle in ein GAT konvertiert.