Déploiement de tables actives globales à l'aide de Terraform
Il est facile de déployer une table active globale 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 onPremises de manière sécurisée et efficace. Pour bien comprendre Terraform, lisez le bref introduction. Assurez-vous que le fournisseur OCI Terraform est installé et configuré.
Etapes de déploiement d'une table globale
Le script terraform ci-dessous :
- Crée la table source en tant que table singleton si elle n'est pas présente.
- Ajoute un index à la table singleton.
- Crée une réplique régionale de la table et en fait une table active globale.
Etapes:
Etape 1 : créez des fichiers de configuration Terraform pour la table active globale : vous devez créer les fichiers de configuration suivants pour créer une table active globale.
provider.tf:
Dans ce fichier, vous fournissez la définition du 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 par principal d'instance, autorisation par principal de ressource et authentification par jeton de sécurité.
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
}
- Les ressources créées ci-dessous sont oci_nosql_table, oci_nosql_index et oci_nosql_table_replica.
- La définition LDD de la table doit inclure avec schéma figé ou avec schéma figé sur la table singleton. Pour plus d'informations, reportez-vous à Création d'une table active globale.
- Les limites de table de la table d'expéditeur (unité de lecture, unité d'écriture et capacité de stockage) doivent être indiquées.
- Lorsque vous ajoutez une réplique de table régionale, vous pouvez indiquer le nom de la table ou l'OCID de la table. Si vous indiquez le nom de la table, vous devez indiquer l'OCID de votre compartiment et la clause
depends_on
lors de la définition de la réplique régionale, comme indiqué ci-dessous. Si vous indiquez l'OCID de la table, la clausedepends_on
et l'OCID de compartiment sont facultatifs.
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 de noms de ressource dans un script Terraform, reportez-vous à Identificateurs.
Remarques :
Vous pouvez utiliser l'une des deux options ci-dessous (option 1 - utilisant l'OCID de la table ou option 2 - utilisant le 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]
}
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"
}
Remarques :
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.
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"
Remarques :
Vous pouvez avoir un seul fichier terraform.tf dans lequel vous pouvez ajouter l'ensemble des détails de configuration, mais il est recommandé d'avoir des fichiers de configuration distincts comme indiqué ci-dessus pour plus de clarté et de facilité de maintenance.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.
Après 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.