Despliegue de tablas activas globales con Terraform
Es fácil desplegar una tabla activa global en OCI mediante Terraform.
Terraform es una herramienta de infraestructura como código que le permite crear, cambiar y versionar recursos en la nube y onPremises de forma segura y eficiente. Para conocer Terraform de forma básica, lea la breve introducción. Asegúrese de que tiene el proveedor de Terraform de OCI instalado y configurado.
Pasos para desplegar una tabla global
El siguiente script de terraform realiza lo siguiente:
- Crea la tabla de origen como una tabla singleton si no está presente.
- Agrega un índice a la tabla singleton.
- Crea una réplica regional de la tabla y la convierte en una tabla activa global.
Pasos:
Paso 1: Cree archivos de configuración de Terraform para la tabla activa global: debe crear los siguientes archivos de configuración para crear una tabla activa global.
provider.tf:
En este archivo, proporciona la definición del proveedor de Terraform de OCI y también las definiciones de variables asociadas. El proveedor de Terraform de OCI SOLO necesita el argumento region
. Sin embargo, puede que tenga que configurar argumentos adicionales con credenciales de autenticación para una cuenta de OCI según el método de autenticación. El proveedor de Terraform de OCI soporta cuatro métodos de autenticación: autenticación de clave de API, autorización de principal de instancia, autorización de entidad de recurso y autenticación de token de seguridad.
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
}
- Los recursos que se crean a continuación son oci_nosql_table, oci_nosql_index y oci_nosql_table_replica.
- La definición de DDL de tabla debe incluir con esquema congelado o con esquema congelado force en la tabla singleton. Para obtener más información, consulte Creación de una tabla activa global.
- Se deben proporcionar los límites de tabla de la tabla de remitentes (unidad de lectura, unidad de escritura y capacidad de almacenamiento).
- Al agregar una réplica de tabla regional, puede especificar el nombre de la tabla o el OCID de la tabla. Si especifica el nombre de la tabla, debe especificar el OCID del compartimento y la cláusula
depends_on
al definir la réplica regional como se muestra a continuación. Si especifica el OCID de la tabla, la cláusuladepends_on
y el OCID del compartimento son opcionales.
oci_nosql_table_replica
, que es una réplica de tabla y el nombre del recurso, por ejemplo replica_montreal
. Consulte Identificadores para obtener más información sobre cómo definir nombres de recursos en un script de Terraform.
Note:
Puede utilizar una de las dos opciones siguientes (opción 1: uso del OCID de la tabla o opción 2: uso del nombre de la tabla) en el 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"
}
Note:
La definición de la tabla singleton (CREATE TABLE IF NOT EXISTS mr_test...
) siempre se debe incluir en el script terraform incluso si la tabla de origen ya existe. Al eliminar la definición CREATE TABLE del script terraform, se borra la tabla de la región.
terraform.tfvars: en este archivo, proporcione los valores para los argumentos del proveedor de Terraform de OCI necesarios según el método de autenticación.
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"
Note:
Puede tener un único archivo terraform.tf donde se puedan agregar todos los detalles de configuración, pero se recomienda tener archivos de configuración independientes como se muestra anteriormente para mayor claridad y fácil mantenimiento.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.
Al confirmar, se crea la tabla singleton y se agrega un índice a ella. A continuación, se crea una réplica regional de la tabla, convirtiendo la tabla singleton en un GAT.