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.
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
}
variable "region" {
}
provider "oci" {
auth = "InstancePrincipal"
region = var.region
}
variable "region" {
}
provider "oci" {
auth = "ResourcePrincipal"
region = var.region
}
variable "region" {
}
variable "config_file_profile" {
}
provider "oci" {
auth = "SecurityToken"
config_file_profile = var.config_file_profile
region = var.region
}
- 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 Klauseldepends_on
und die Compartment-OCID optional.
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]
}
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.
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>"
compartment_ocid = "<your_compartment_ocid>"
region = "<name of your region>"
compartment_ocid = "<your_compartment_ocid>"
region = "<name of your region>"
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.terraform init
terraform apply
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.