Déploiement de tables actives globales à l'aide de Terraform

Il est facile de déployer une table Global Active sur OCI à l'aide de Terraform.

Terraform est un outil d'infrastructure en tant que code qui vous permet de créer, de modifier et de gérer les versions des ressources cloud et sur site de manière sûre et efficace. Pour bien comprendre Terraform, lisez la brève introduction. Assurez-vous que le fournisseur OCI Terraform est installé et que l'authentification par clé d'API configurée, l'autorisation de principal d'instance, l'autorisation de principal de ressource et l'authentification par jeton de sécurité sont disponibles.

Etapes de déploiement d'une table globale

Le script terraform ci-dessous effectue les opérations suivantes :

Etapes :

Etape 1 : créez des fichiers de configuration Terraform pour la table Global Active. Vous devez créer les fichiers de configuration suivants pour créer une table Global Active.

provider.tf : dans ce fichier, vous fournissez la définition de fournisseur OCI Terraform, ainsi que les définitions de variable associées. Le fournisseur OCI Terraform requiert UNIQUEMENT l'argument region. Toutefois, vous devrez peut-être configurer des arguments supplémentaires avec des informations d'identification d'authentification pour un compte OCI en fonction de la méthode d'authentification.

Le fournisseur OCI Terraform prend en charge quatre méthodes d'authentification : authentification par clé d'API, autorisation de principal d'instance, autorisation de principal de ressource et authentification par jeton de sécurité.

Exemple de provider.tf avec authentification par clé d'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
}

Exemple de provider.tf avec autorisation de principal d'instance

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

Exemple de provider.tf avec autorisation de principal de ressource

variable "region" {
}

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

Exemple de fichier provider.tf avec authentification par jeton de sécurité

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

nosql.tf : les ressources sont l'élément le plus important dans le langage Terraform. Terraform crée une table singleton, un index et une réplique de table en tant que ressource. Dans ce fichier, vous indiquez la définition des ressources de configuration terraform NoSQL pour la création d'une table Global Active. Dans l'exemple ci-dessous, vous créez une table active globale en ajoutant une réplique régionale de cette table.

Pour comprendre comment un bloc de ressource est construit dans Terraform, reportez-vous à Syntaxe de ressource. La syntaxe de la commande de ressource inclut le type de ressource oci_nosql_table_replica, qui est une réplique de table, et le nom de la ressource, par exemple replica_montreal. Pour plus d'informations sur la définition des noms de ressource dans un script Terraform, reportez-vous à Identificateurs.

Remarque : vous pouvez utiliser l'une des deux options ci-dessous (option 1 - utilisation de l'OCID de la table ou option 2 - utilisation du nom de la table) dans le 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]
}

Exemple de fichier 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"
}

Remarque : la définition de la table singleton (CREATE TABLE IF NOT EXISTS mr_test...) doit toujours être incluse dans le script terraform même si la table source existe déjà. La suppression de la définition CREATE TABLE du script terraform supprime la TABLE de la région.

terraform.tfvars : dans ce fichier, vous fournissez les valeurs des arguments de fournisseur OCI Terraform requis en fonction de la méthode d'authentification.

Exemple de fichier terraform.tfvars avec authentification par clé d'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>"

Exemple de fichier terraform.tfvars avec autorisation de principal d'instance :

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

Exemple de fichier terraform.tfvars avec autorisation de principal de ressource :

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

Exemple de fichier terraform.tfvars avec authentification par jeton de sécurité :

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

Remarque : vous pouvez avoir un seul fichier terraform.tf dans lequel les détails de configuration peuvent être ajoutés, mais il est recommandé d'avoir des fichiers de configuration distincts comme indiqué ci-dessus pour plus de clarté et faciliter la maintenance.

Etape 2 : appelez le terraform et initialisez la configuration.

terraform init

Etape 3 : exécutez la commande suivante pour appeler le script terraform.

terraform apply

Terraform affiche le plan à appliquer et invite à confirmer, comme indiqué ci-dessous.

Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.

A la confirmation, la table singleton est créée et un index y est ajouté. Une réplique régionale de la table est alors créée, convertissant la table singleton en GAT.