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:

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.

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.