Distribuzione delle tabelle Global Active mediante Terraform
È facile distribuire una tabella Global Active su OCI utilizzando Terraform.
Terraform è uno strumento infrastructure-as-code che ti consente di creare, modificare e sottoporre a versione le risorse cloud e onPremises in modo sicuro ed efficiente. Per avere una conoscenza di base di Terraform, leggi la breve introduzione. Assicurarsi di disporre del provider Terraform OCI installato e configurato.
Passi per distribuire una tabella globale
Lo script terraform riportato di seguito esegue le operazioni riportate di seguito.
- Crea la tabella di origine come tabella singleton se non è presente.
- Aggiunge un indice alla tabella singleton.
- Crea una replica regionale della tabella e la rende una tabella attiva globale.
Passi:
Passo 1: creare i file di configurazione Terraform per la tabella Global Active: è necessario creare i file di configurazione riportati di seguito per creare una tabella Global Active.
provider.tf:
In questo file è possibile fornire la definizione del provider Terraform OCI e le definizioni delle variabili associate. Il provider Terraform OCI richiede SOLO l'argomento region
. Tuttavia, potrebbe essere necessario configurare argomenti aggiuntivi con le credenziali di autenticazione per un account OCI in base al metodo di autenticazione. Il provider Terraform OCI supporta quattro metodi di autenticazione: Autenticazione chiave API, Autorizzazione principal istanza, Autorizzazione principal risorsa e Autenticazione token di sicurezza.
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
}
- Le risorse create di seguito sono oci_nosql_table, oci_nosql_index e oci_nosql_table_replica.
- La definizione DDL della tabella deve includere con schema congelato o con schema frozen force nella tabella singleton. Per ulteriori dettagli, vedere Creazione di una tabella attiva globale.
- È necessario specificare i limiti della tabella del mittente (unità di lettura, unità di scrittura e capacità di storage).
- Quando si aggiunge una replica della tabella regionale, è possibile specificare il nome della tabella o l'OCID della tabella. Se si specifica il nome della tabella, è necessario specificare l'OCID del compartimento e la clausola
depends_on
durante la definizione della replica regionale, come mostrato di seguito. Se si specifica l'OCID della tabella, la clausoladepends_on
e l'OCID del compartimento sono facoltativi.
oci_nosql_table_replica
che è una replica della tabella e il nome della risorsa, ad esempio replica_montreal
. Vedere Identificativi per i dettagli su come definire i nomi delle risorse in uno script Terraform.
Nota
È possibile utilizzare una delle due opzioni riportate di seguito (opzione 1 - utilizzando l'OCID della tabella o opzione 2 - utilizzando il nome della tabella) nello script nosql.tf.#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"
}
Nota
La definizione della tabella singleton (CREATE TABLE IF NOT EXISTS mr_test...
) deve essere sempre inclusa nello script terraform anche se la tabella di origine esiste già. La rimozione della definizione CREATE TABLE dallo script terraform comporta l'eliminazione della tabella dall'area.
terraform.tfvars: in questo file è possibile fornire i valori per gli argomenti del provider Terraform OCI richiesti in base al metodo di autenticazione.
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"
Nota
È possibile disporre di un singolo file terraform.tf in cui è possibile aggiungere tutti i dettagli di configurazione, ma si consiglia di disporre di file di configurazione separati come mostrato sopra per maggiore chiarezza e facilità di manutenzione.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.
Alla conferma, viene creata la tabella singleton e viene aggiunto un indice. Viene quindi creata una replica regionale della tabella, convertendo la tabella singleton in un GAT.