Despliegue de tablas activas globales con Terraform
Es fácil desplegar una tabla Global Active en OCI con Terraform.
Terraform es una herramienta de infraestructura como código que le permite crear, cambiar y versionar recursos en la nube y locales de forma segura y eficiente. Para obtener un conocimiento básico de Terraform, lea la breve introducción. Asegúrese de que tiene el proveedor de Terraform de OCI instalado y la autenticación de clave de API configurada, la autorización de principal de instancia, la autorización de principal de recurso y la autenticación de token de seguridad.
Pasos para desplegar una tabla global
El siguiente script de terraform hace 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: Crear archivos de configuración de Terraform para la tabla Global Active: debe crear los siguientes archivos de configuración para crear una tabla Global Active.
provider.tf: en este archivo, proporciona la definición del proveedor de Terraform de OCI y 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 principal de recurso y autenticación de token de seguridad.
Ejemplo de provider.tf con autenticación de clave de 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
}
Ejemplo de provider.tf con autorización de principal de instancia
variable "region" {
}
provider "oci" {
auth = "InstancePrincipal"
region = var.region
}
Ejemplo de provider.tf con autorización de entidad de recurso
variable "region" {
}
provider "oci" {
auth = "ResourcePrincipal"
region = var.region
}
Ejemplo de provider.tf con autenticación de token de seguridad
variable "region" {
}
variable "config_file_profile" {
}
provider "oci" {
auth = "SecurityToken"
config_file_profile = var.config_file_profile
region = var.region
}
nosql.tf:los recursos son el elemento más importante en el lenguaje de Terraform. Terraform crea una tabla singleton, un índice y una réplica de tabla como recurso. En este archivo, se proporciona la definición de los recursos de configuración de terraform NoSQL para crear una tabla activa global. En el siguiente ejemplo, está creando una tabla Global Active agregando una réplica regional de esta tabla.
-
Los recursos que se crean a continuación son oci_nosql_table, oci_nosql_index.
-
La definición de DDL de tabla debe incluir
with schema frozenowith schema frozen forceen la tabla singleton. Para obtener más información, consulte Creación de una tabla activa global. -
Se deben proporcionar los límites 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_onal definir la réplica regional como se muestra a continuación. Si especifica el OCID de la tabla, la cláusuladepends_ony el OCID del compartimento son opcionales.
Consulte Sintaxis de recursos para comprender cómo se crea un bloque de recursos en Terraform. La sintaxis del comando de recurso incluye el tipo de recurso 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.
Nota: Puede utilizar una de las dos opciones siguientes (Opción 1: uso del OCID de la tabla u 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]
}
Archivo nosql.tf de ejemplo:
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 definición de la tabla singleton (CREATE TABLE IF NOT EXISTS mr_test...) siempre se debe incluir en el script terraform aunque la tabla de origen ya exista. Si se elimina 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.
Ejemplo de terraform.tfvars con autenticación de clave de 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>"
Ejemplo de terraform.tfvars con autorización de principal de instancia:
compartment_ocid = "<your_compartment_ocid>"
region = "<name of your region>"
Ejemplo de terraform.tfvars con autorización de entidad de recurso:
compartment_ocid = "<your_compartment_ocid>"
region = "<name of your region>"
Ejemplo de terraform.tfvars con autenticación de token de seguridad:
compartment_ocid = "<your_compartment_ocid>"
region = "<name of your region>"
config_file_profile = "PROFILE"
Nota: Puede tener un único archivo terraform.tf en el que se puedan agregar todos los detalles de configuración, pero se recomienda tener archivos de configuración independientes como se muestra anteriormente para una mayor claridad y un mantenimiento sencillo.
Paso 2: invoque terraform e inicialice la configuración.
terraform init
Paso 3: ejecute el siguiente comando para invocar la secuencia de comandos terraform.
terraform apply
Terraform muestra el plan que se va a aplicar y solicita confirmación como se muestra a continuación.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Al confirmarlo, se crea la tabla singleton y se le agrega un índice. A continuación, se crea una réplica regional de la tabla, que convierte la tabla singleton en un GAT.