Distribuzione di tabelle attive globali 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 versioni delle risorse cloud e on-premise in modo sicuro ed efficiente. Per una conoscenza di base di Terraform, leggere il breve documento introduzione. Assicurarsi di disporre del provider Terraform OCI installato e dell'autenticazione della chiave API configurata, dell'autorizzazione del principal dell'istanza, dell'autorizzazione del principal risorsa e dell'autenticazione del token di sicurezza.
Passi per distribuire una tabella globale
Lo script terraform riportato di seguito fa quanto segue:
- 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 Attivo globale: è necessario creare i seguenti file di configurazione per la creazione di una tabella Attivo globale.
provider.tf: in questo file, si fornisce 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 credenziali di autenticazione per un account OCI in base al metodo di autenticazione.
Il provider Terraform OCI supporta quattro metodi di autenticazione: autenticazione della chiave API, autorizzazione del principal dell'istanza, autorizzazione del principal risorsa e autenticazione del token di sicurezza.
Esempio di provider.tf con autenticazione chiave API
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
}
Esempio di provider.tf con autorizzazione principal istanza
variable "region" {
}
provider "oci" {
auth = "InstancePrincipal"
region = var.region
}
Esempio di provider.tf con autorizzazione principal risorsa
variable "region" {
}
provider "oci" {
auth = "ResourcePrincipal"
region = var.region
}
Esempio di provider.tf con autenticazione token di sicurezza
variable "region" {
}
variable "config_file_profile" {
}
provider "oci" {
auth = "SecurityToken"
config_file_profile = var.config_file_profile
region = var.region
}
nosql.tf:le risorse sono l'elemento più importante nel linguaggio Terraform. Terraform crea una tabella singleton, un indice e una replica di tabella come risorsa. In questo file viene fornita la definizione delle risorse di configurazione NoSQL terraform per la creazione di una tabella attiva globale. Nell'esempio riportato di seguito, si sta creando una tabella Attivo globale aggiungendo una replica regionale di questa tabella.
-
Le risorse create di seguito sono oci_nosql_table, oci_nosql_index.
-
La definizione DDL della tabella deve includere
with schema frozenowith schema frozen forcenella tabella singleton. Per ulteriori dettagli, vedere Creazione di una tabella attiva globale. -
È necessario specificare i limiti di tabella della tabella del mittente (unità di lettura, unità di scrittura e capacità di storage).
-
Quando si aggiunge una replica di 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_ondurante la definizione della replica regionale come mostrato di seguito. Se si specifica l'OCID della tabella, la clausoladepends_one l'OCID del compartimento sono facoltativi.
Vedere Sintassi delle risorse per comprendere come viene costruito un blocco di risorse in Terraform. La sintassi del comando resource include il tipo di risorsa oci_nosql_table_replica che è una replica della tabella e il nome della risorsa, ad esempio replica_montreal. Per informazioni dettagliate su come definire i nomi delle risorse in uno script Terraform, vedere Identificatori.
Nota: è possibile utilizzare una delle due opzioni riportate di seguito (Opzione 1 - utilizzando 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]
}
File nosql.tf di esempio:
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à. Se si rimuove la definizione CREATE TABLE dallo script terraform, la tabella viene eliminata dall'area.
terraform.tfvars:in questo file vengono forniti i valori per gli argomenti del provider Terraform OCI necessari in base al metodo di autenticazione.
Esempio di terraform.tfvars con autenticazione chiave API:
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>"
Esempio di terraform.tfvars con autorizzazione principal istanza:
compartment_ocid = "<your_compartment_ocid>"
region = "<name of your region>"
Esempio di terraform.tfvars con autorizzazione principal risorsa:
compartment_ocid = "<your_compartment_ocid>"
region = "<name of your region>"
Esempio di terraform.tfvars con autenticazione token di sicurezza:
compartment_ocid = "<your_compartment_ocid>"
region = "<name of your region>"
config_file_profile = "PROFILE"
Nota: è possibile avere 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.
Passo 2: richiamare terraform e inizializzare l'impostazione.
terraform init
Passo 3:eseguire il comando seguente per richiamare lo script terraform.
terraform apply
Terraform mostra il piano da applicare e richiede la conferma come mostrato di seguito.
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.