Globale aktive Tabellen 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 onPremises-Ressourcen sicher und effizient erstellen, ändern und versionieren können. Um grundlegende Kenntnisse zu Terraform zu erhalten, lesen Sie die kurze Einführung. Stellen Sie sicher, dass der OCI-Terraform-Provider installiert und konfiguriert ist.

Schritte zum Bereitstellen einer globalen Tabelle

Das Terraform-Skript unten führt folgende Aufgaben 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 globalen aktiven Tabelle.

Schritte:

Schritt 1: Terraform-Konfigurationsdateien für die globale aktive Tabelle erstellen: Sie müssen die folgenden Konfigurationsdateien erstellen, um eine globale aktive Tabelle zu erstellen.

provider.tf:

In dieser Datei geben Sie die OCI-Terraform-Providerdefinition sowie zugehörige 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 Instance Principal-Berechtigung
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 Security Token Authentication
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 in 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 zum Erstellen einer globalen aktiven Tabelle an. Im folgenden Beispiel erstellen Sie eine globale aktive Tabelle, indem Sie ein regionales Replikat dieser Tabelle hinzufügen.
  • Die unten erstellten Ressourcen sind oci_nosql_table, oci_nosql_index und oci_nosql_table_replica.
  • Die Tabellen-DDL-Definition muss mit eingefrorenem Schema oder mit erzwungenem Einfrieren des Schemas in der Singleton-Tabelle enthalten. Weitere Informationen finden Sie unter Globale aktive Tabelle erstellen.
  • Die Tabellengrenzen 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 beim Definieren des regionalen Replikats die OCID Ihres Compartments und die Klausel depends_on angeben, wie unten dargestellt. Wenn Sie die OCID der Tabelle angeben, sind die Klausel depends_on und die Compartment-OCID optional.
Informationen zum Erstellen eines Ressourcenblocks in Terraform finden Sie unter Ressourcensyntax. 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. Details 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]
}
nosql.tf-Beispieldatei:
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 der Region 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-Berechtigung:
compartment_ocid = "<your_compartment_ocid>"
region = "<name of your region>"
Beispiel für terraform.tfvars mit Resource Principal-Autorisierung:
compartment_ocid = "<your_compartment_ocid>"
region = "<name of your region>"
Beispiel für terraform.tfvars mit Security Token Authentication:
compartment_ocid = "<your_compartment_ocid>"
region = "<name of your region>"
config_file_profile = "PROFILE"

Hinweis:

Sie können eine einzelne terraform.tf-Datei verwenden, in der die gesamten Konfigurationsdetails hinzugefügt werden können. Es wird jedoch empfohlen, zur Übersichtlichkeit und einfachen Wartung separate Konfigurationsdateien wie oben gezeigt zu verwenden.
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 anzuwendenden Plan an und fordert zur Bestätigung auf, wie unten gezeigt.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.

Bei Bestätigung wird die Singleton-Tabelle erstellt und ihr ein Index hinzugefügt. Anschließend wird ein regionales Replikat der Tabelle erstellt und die Singleton-Tabelle in einen GAT konvertiert.