Implantando tabelas Ativas Globais usando o Terraform

É fácil implantar uma tabela Global Active na OCI usando o Terraform.

O Terraform é uma ferramenta de infraestrutura como código que permite criar, alterar e criar versões de recursos na nuvem e 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 a Autenticação de Chave de API configurada, a Autorização do Controlador de Instâncias, a Autorização do Controlador de Recursos e a Autenticação do Token de Segurança.

Etapas para implantar uma tabela Global

O script terraform abaixo faz o seguinte:

Etapas:

Etapa 1: Criar arquivos de configuração do Terraform para a tabela Global Ativa: Você precisa criar os seguintes arquivos de configuração para criar uma tabela Global Ativa.

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 do Token de Segurança.

Exemplo de provider.tf com Autenticação de Chave 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
}

Exemplo de provider.tf com Autorização do Controlador de Instâncias

variable "region" {
}
provider "oci" {
  auth = "InstancePrincipal"
  region = var.region
}

Exemplo de provider.tf com Autorização do Controlador de Recursos

variable "region" {
}

provider "oci" {
  auth = "ResourcePrincipal"
  region = var.region
}

Exemplo de provider.tf com autenticação de token de segurança

variable "region" {
}
variable "config_file_profile" {
}
provider "oci" {
  auth = "SecurityToken"
  config_file_profile = var.config_file_profile
  region = var.region
}

nosql.tf:Os recursos são o elemento mais importante na linguagem Terraform. O Terraform cria uma tabela única, um índice e uma réplica de tabela como um recurso. Neste arquivo, você fornece a definição de recursos de configuração de terraform NoSQL para criar uma tabela Ativa Global. No exemplo abaixo, você está criando uma tabela Global Ativa adicionando uma réplica regional desta tabela.

Consulte Sintaxe do recurso para entender como um bloco de recursos é construído no Terraform. A sintaxe do comando de recurso inclui o tipo de recurso 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 Terraform.

Observação: você pode usar uma das duas opções abaixo (Opção 1 - usando o OCID da tabela ou 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]
}

Exemplo de arquivo nosql.tf:

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 para os argumentos obrigatórios do provedor Terraform do OCI com base no método de autenticação.

Exemplo de terraform.tfvars com autenticação de chave 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>"

Exemplo de terraform.tfvars com Autorização do Controlador de Instâncias:

compartment_ocid = "<your_compartment_ocid>"
region = "<name of your region>"

Exemplo de terraform.tfvars com autorização do controlador de recursos:

compartment_ocid = "<your_compartment_ocid>"
region = "<name of your region>"

Exemplo de terraform.tfvars com autenticação de token de segurança:

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.

Etapa 2:Chamar terraform e inicializar a configuração.

terraform init

Etapa 3:Execute o comando a seguir para chamar o script terraform.

terraform apply

O Terraform mostra o plano a ser aplicado e solicita confirmação, conforme mostrado abaixo.

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 é então criada, convertendo a tabela singleton em um GAT.