Implantando tabelas Ativas Globais usando o Terraform
É fácil implantar uma tabela Global Active no OCI usando o Terraform.
O Terraform é uma ferramenta de infraestrutura como código que permite criar, alterar e controlar a versão da nuvem e dos recursos onPremises com segurança e eficiência. Para ter uma compreensão básica do Terraform, leia a breve introdução. Certifique-se de ter o provedor Terraform do OCI instalado e configurado.
Etapas para implantar uma tabela Global
O script terraform abaixo faz o seguinte:
- Cria a tabela de origem como uma tabela singleton se ela não estiver presente.
- Adiciona um índice à tabela singleton.
- Cria uma réplica regional da tabela e a torna uma tabela Ativa Global.
Etapas:
Etapa 1: Criar arquivos de configuração do Terraform para a tabela Global Active: Você precisa criar os seguintes arquivos de configuração para criar uma tabela Global Active.
provider.tf:
Neste arquivo, você fornece a definição do provedor Terraform do OCI e também as definições de variáveis associadas. O provedor Terraform do OCI requer SOMENTE o argumento region
. No entanto, talvez você precise configurar argumentos adicionais com credenciais de autenticação para uma conta do OCI com base no método de autenticação. O provedor Terraform do OCI suporta quatro métodos de autenticação: Autenticação de Chave de API, Autorização do Controlador de Instâncias, Autorização do Controlador de Recursos e Autenticação de Token de Segurança.
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
}
- Os recursos criados abaixo são oci_nosql_table, oci_nosql_index e oci_nosql_table_replica.
- A definição DDL da tabela deve incluir com o esquema congelado ou com a força congelada do esquema na tabela única. Para obter mais detalhes, consulte Criando uma tabela Ativa Global.
- Os limites da tabela do remetente (unidade de leitura, unidade de gravação e capacidade de armazenamento) devem ser fornecidos.
- Ao adicionar uma réplica de tabela regional, você pode especificar o nome da tabela ou o OCID da tabela. Se você especificar o nome da tabela, precisará especificar o OCID do seu compartimento e a cláusula
depends_on
ao definir a réplica regional, conforme mostrado abaixo. Se você estiver especificando o OCID da tabela, a cláusuladepends_on
e o OCID do compartimento serão opcionais.
oci_nosql_table_replica
, que é uma réplica de tabela e o nome do recurso, por exemplo, replica_montreal
. Consulte Identificadores para obter detalhes sobre como definir nomes de recursos em um script do Terraform.
Observação:
Você pode usar uma das duas opções abaixo (Opção 1 - usando o OCID da tabela ou a Opção 2 - usando o nome da tabela) no 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"
}
Observação:
A definição da tabela singleton (CREATE TABLE IF NOT EXISTS mr_test...
) sempre deve ser incluída no script terraform, mesmo que a tabela de origem já exista. A remoção da definição CREATE TABLE do script terraform elimina a tabela da região.
terraform.tfvars: Neste arquivo, você fornece os valores dos argumentos necessários do provedor Terraform do OCI com base no método de autenticação.
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"
Observação:
Você pode ter um único arquivo terraform.tf no qual todos os detalhes da configuração podem ser adicionados, mas é recomendável ter arquivos de configuração separados, conforme mostrado acima, para maior clareza e fácil manutenção.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.
Na confirmação, a tabela singleton é criada e um índice é adicionado a ela. Uma réplica regional da tabela é criada, convertendo a tabela singleton em GAT.