Déploiement d'une table Oracle NoSQL à l'aide de Terraform et du gestionnaire de ressources OCI
Il est facile de déployer des tables NDCS sur OCI (Oracle Cloud Infrastructure) à l'aide de Terraform et de la pile du gestionnaire de ressources. Nous allons utiliser l'interface de ligne de commande du gestionnaire de ressources OCI pour déployer des tables NDCS sur Oracle Cloud. Avant de poursuivre cet article, nous supposons que vous connaissez NoSQL Cloud Service et que vous connaissez ses bases, ainsi que Terraform.
Terraform utilise des fournisseurs pour l'interface entre le moteur Terraform et la plate-forme en nuage prise en charge. Le fournisseur Terraform pour Oracle Cloud Infrastructure (OCI) est un composant qui connecte Terraform aux services OCI que vous voulez gérer. Vous pouvez utiliser le fournisseur Terraform pour OCI, y compris Terraform Cloud et le gestionnaire de ressources OCI.
Le gestionnaire de ressources OCI est un service géré par Oracle basé sur Terraform qui utilise des fichiers de configuration Terraform pour automatiser le déploiement et les opérations des ressources OCI prises en charge par le fournisseur Terraform pour OCI. Resource Manager vous permet de partager et de gérer des configurations d'infrastructure et des fichiers d'état pour plusieurs équipes et plateformes.

- Pour créer des ressources dans OCI, nous devons configurer terraform. Créez les fichiers de configuration terraform de base pour la définition du fournisseur terraform, les définitions de ressource NoSQL, l'authentification et les variables d'entrée.
- Déterminez où stocker les fichiers de configuration terraform. Vous pouvez stocker ces fichiers dans différentes sources, telles que le dossier local ou le fichier zip, le seau de stockage d'objets et les systèmes de contrôle source, tels que GitHub ou GitLab.
- Exécutez les commandes de l'interface de ligne de commande du gestionnaire de ressources pour effectuer les tâches suivantes :
- Créer une pile.
- Générez et vérifiez le plan d'exécution.
- Exécutez la tâche d'application pour provisionner des ressources NoSQL.
- Vérifiez les fichiers journaux, au besoin.
Note :
Nous allons travailler avec l'interface de ligne de commande du gestionnaire de ressources pour Oracle Cloud Infrastructure (OCI) et exécuter ces commandes dans Cloud Shell à l'aide de la console. Cela signifie que vous aurez besoin d'informations sur votre location en nuage et d'autres éléments tels que des paires de clés publiques ou privées utiles. Pour configurer l'interface de ligne de commande OCI sur votre machine locale, consultez cette documentation.Cet article contient les informations suivantes :
Sous-étape 1.1 : Créer une configuration de fournisseur Terraform pour OCI
Créez un nouveau fichier nommé "provider.tf
" qui contient la définition du fournisseur Terraform pour OCI et les définitions de variable associées. Le fournisseur Terraform pour OCI nécessite UNIQUEMENT l'argument region
.
- Authentication de clé d'API
- Autorisation du principal d'instance
- Mappage de sécurité
region
spécifie la région géographique de création des ressources de fournisseur. Pour cibler plusieurs régions dans une configuration unique, il suffit de créer une définition de fournisseur pour chaque région et de les différencier à l'aide d'un alias de fournisseur, comme illustré dans l'exemple suivant. Notez qu'un seul fournisseur, nommé "oci
", est défini et que la définition du fournisseur oci est entrée deux fois, une fois pour la région us-phoenix-1
(avec l'alias "phx
") et une fois pour la région us-ashburn-1
(avec l'alias "iad
").provider "oci" {
region = "us-phoenix-1"
alias = "phx"
}
provider "oci" {
region = "us-ashburn-1"
alias = "iad"
}
region
est requis pour le fournisseur Terraform pour OCI. Les arguments tenancy_ocid
, user_ocid
, private_key_path
et fingerprint
sont requis pour l'authentification de clé d'API. Vous pouvez fournir la valeur de region
et des clés d'authentification par clé d'API (tenancy_ocid
, user_ocid
, private_key_path
et fingerprint
) en tant que variables d'environnement ou dans des variables de configuration Terraform (comme indiqué à la sous-étape 1.3 : Chargement des variables de configuration Terraform).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
}
tenancy_ocid
, user_ocid
, private_key_path
, et fingerprint
dans la définition du fournisseur.
Note :
L'autorisation du principal d'instance s'applique seulement aux instances qui s'exécutent dans Oracle Cloud Infrastructure.region
est requis pour le fournisseur Terraform pour OCI et un argument auth
est requis pour l'autorisation du principal d'instance. Vous pouvez fournir la valeur de l'argument region
en tant que variables d'environnement ou dans les variables de configuration Terraform (comme indiqué à la sous-étape 1.3 : Chargement des variables de configuration Terraform).variable "region" {
}
provider "oci" {
auth = "InstancePrincipal"
region = var.region
}
Note :
Ce jeton expire après une heure. Évitez d'utiliser cette méthode lorsque le provisionnement des ressources prend plus d'une heure. Pour plus d'informations, voir Actualisation d'un marqueur.region
un argument est requis pour le fournisseur Terraform pour OCI. Les arguments auth
et config_file_profile
sont requis pour l'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
}
Sous-étape 1.2 : Créer une configuration Terraform pour NoSQL
Créez un fichier nommé "nosql.tf
" qui contient les ressources de configuration terraform NoSQL pour créer des tables ou des index du service NoSQL Database Cloud. Pour plus d'informations sur les ressources et les sources de données de la base de données NoSQL, voir oci_nosql_table.
compartment_ocid
est requis pour les ressources de base de données NoSQL telles que les tables et les index. Vous pouvez fournir la valeur de compartment_ocid
en tant que variables d'environnement ou dans les variables de configuration Terraform (comme indiqué à la sous-étape 1.3 : Chargement des variables de configuration Terraform).variable "compartment_ocid" {
}
resource "oci_nosql_table" "nosql_demo" {
compartment_id = var.compartment_ocid
ddl_statement = "CREATE TABLE if not exists demo (ticketNo INTEGER, fullName STRING, contactPhone STRING, confNo STRING, gender STRING, bagInfo JSON, PRIMARY KEY (ticketNo))"
name = "demo"
table_limits {
max_read_units = var.table_table_limits_max_read_units
max_storage_in_gbs = var.table_table_limits_max_storage_in_gbs
max_write_units = var.table_table_limits_max_write_units
}
}
resource "oci_nosql_table" "nosql_demoKeyVal" {
compartment_id = var.compartment_ocid
ddl_statement = "CREATE TABLE if not exists demoKeyVal (key INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1 NO CYCLE), value JSON, PRIMARY KEY (key))"
name = "demoKeyVal"
table_limits {
max_read_units = var.table_table_limits_max_read_units
max_storage_in_gbs = var.table_table_limits_max_storage_in_gbs
max_write_units = var.table_table_limits_max_write_units
}
}
Sous-étape 1.3 : Chargement des variables de configuration Terraform
L'étape suivante consiste à créer un fichier nommé "terraform.tfvars
" et à fournir des valeurs pour les arguments de fournisseur Terraform OCI requis en fonction de la méthode d'authentification.
Fournissez des valeurs pour vos clés d'accès et de clé secrète IAM (tenancy_ocid
, user_ocid
, private_key_path
et fingerprint
), region
et compartment_ocid
). Vous devez déjà avoir un utilisateur IAM OCI avec une clé secrète et des clés d'accès disposant d'autorisations suffisantes sur le service NoSQL Database Cloud. Obtenez ces clés et stockez-les dans le fichier.
tenancy_ocid = "ocid1.tenancy.oc1..aaaaaaaaqljdu37xcfoqvyj47pf5dqutpxu4twoqc7hukwgpbavpdwkqxc6q"
user_ocid = "ocid1.user.oc1..aaaaaaaafxz473ypsc6oqiespihan6yi6obse3o4e4t5zmpm6rdln6fnkurq"
fingerprint = "2c:9b:ed:12:81:8d:e6:18:fe:1f:0d:c7:66:cc:03:3c"
private_key_path = "~/NoSQLLabPrivateKey.pem"
compartment_ocid = "ocid1.compartment.oc1..aaaaaaaawrmvqjzoegxbsixp5k3b5554vlv2kxukobw3drjho3f7nf5ca3ya"
region = "us-phoenix-1"
Fournissez des valeurs pour les arguments region
et compartment_ocid
.
region = "us-phoenix-1"
compartment_ocid = "ocid1.compartment.oc1..aaaaaaaawrmvqjzoegxbsixp5k3b5554vlv2kxukobw3drjho3f7nf5ca3ya"
Fournissez des valeurs pour les arguments region
, compartment_ocid
et config_file_profile
.
region = "us-phoenix-1"
compartment_ocid = "ocid1.compartment.oc1..aaaaaaaawrmvqjzoegxbsixp5k3b5554vlv2kxukobw3drjho3f7nf5ca3ya"
config_file_profile = "PROFILE"
Sous-étape 1.4 : Déclarer des variables d'entrée
variables.tf
" et à affecter des valeurs aux variables d'entrée qu'il contient. Cliquez ici pour consulter la documentation sur Terraform afin de vérifier les arguments ou propriétés valides disponibles pour la base de données NoSQL. Dans l'exemple, la valeur par défaut des unités de lecture, d'écriture et de stockage pour la table NoSQL est réglée à 10
, 10
et 1
respectivement.variable "table_table_limits_max_read_units" {
default = 10
}
variable "table_table_limits_max_write_units" {
default = 10
}
variable "table_table_limits_max_storage_in_gbs" {
default = 1
}
À l'aide de Cloud Shell à partir de la console, nous avons créé tous les fichiers de configuration terraform requis pour la définition du fournisseur, les ressources de base de données NoSQL, les valeurs d'authentification et les variables d'entrée.

Étape 2 : Où stocker vos configurations Terraform

Lors de la création d'une pile avec le gestionnaire de ressources, vous pouvez sélectionner votre configuration Terraform à partir des sources suivantes.
- Fichier .zip local
- Dossier local
- Seau de stockage d'objets
Le contenu le plus récent du seau est automatiquement utilisé par toute tâche exécutée sur la pile associée.
- Systèmes de contrôle du code source, tels que GitHub et GitLab
La dernière version de votre configuration est automatiquement utilisée par toute tâche exécutée sur la pile associée.
- Modèle (configuration Terraform prédéfinie à partir d'Oracle ou d'un modèle privé)
- Compartiment existant (Détection des ressources)
Sous-étape 2.1 : Créer des fournisseurs de source de configuration pour les configurations Terraform distantes
Vous devez créer un fournisseur de configuration source si vous souhaitez utiliser les configurations terraform distantes hébergées sur un système de contrôle source, par exemple GitHub et GitLab.
Pour plus d'informations sur la création de fournisseurs de source de configuration pour les configurations Terraform distantes, voir Gestion des fournisseurs de source de configuration.
Étape 3 : Créer une pile à partir d'un fichier

Utilisez la commande liée à l'emplacement du fichier. Pour les sources de configuration Terraform prises en charge par le gestionnaire de ressources, voir Où stocker vos configurations Terraform.
terraform.zip
. Le fichier terraform.zip
contient les fichiers suivants :
provider.tf
nosql.tf
terraform.tfvars
variables.tf
Note :
Dans ce tutoriel, nous utilisons les commandes de l'interface de ligne de commande du gestionnaire de ressources OCI pour créer une pile. Vous pouvez effectuer la même tâche à l'aide de la console du gestionnaire de ressources OCI.oci resource-manager stack create-from-git-provider
--compartment-id ocid1.tenancy.oc1..uniqueid
--config-source-configuration-source-provider-id ocid.ormconfigsourceprovider.oc1..uniqueid
--config-source-repository-url https://github.com/user/repo.git
--config-source-branch-name mybranch
--display-name "My Stack from Git"
--description "Create NoSQL Table"
--variables file://variables.json
--working-directory ""
oci resource-manager stack create-from-object-storage
--compartment-id ocid1.tenancy.oc1..uniqueid
--config-source-namespace MyNamespace
--config-source-bucket-name MyBucket
--config-source-region PHX
--display-name "My Stack from Object Storage"
--description "Create NoSQL Table"
--variables file://variables.json
oci resource-manager stack create
--compartment-id ocid1.tenancy.oc1..uniqueid
--config-source vcn.zip
--variables file://variables.json
--display-name "My Example Stack"
--description "Create NoSQL Table"
--working-directory ""
--compartment-id
est l'OCID du compartiment où vous voulez créer la pile.--config-source
est le nom d'un fichier .zip qui contient un ou plusieurs fichiers de configuration Terraform.- (Facultatif)
--variables
est le chemin d'accès au fichier spécifiant des variables d'entrée pour les ressources.Le fournisseur Terraform pour Oracle Cloud Infrastructure nécessite des paramètres supplémentaires lors de l'exécution de Terraform localement (sauf si vous utilisez des principaux d'instance). Pour plus d'informations sur l'utilisation de variables dans Terraform, voir Variables d'entrée. Voir aussi Configuration des variables d'entrée.
- (Facultatif)
--display-name
est le nom convivial de la nouvelle pile. - (Facultatif)
--description
est la description de la nouvelle pile. - (Facultatif)
--working-directory
est le fichier de configuration racine dans le répertoire. Si non précisé, ou si la valeur est nulle comme dans cet exemple, le service suppose que le fichier de niveau supérieur du répertoire est le fichier de configuration racine.
oci resource-manager stack create
--compartment-id ocid1.compartment.oc1..aaaaaaaawrmvqjzoegxbsixp5k3b5554vlv2kxukobw3drjho3f7nf5ca3ya
--config-source terraform.zip
{
"data": {
"compartment-id": "ocid1.compartment.oc1..aaaaaaaawrmvqjzoegxbsixp5k3b5554vlv2kxukobw3drjho3f7nf5ca3ya",
"config-source": {
"config-source-type": "ZIP_UPLOAD",
"working-directory": null
},
"defined-tags": {},
"description": null,
"display-name": "ormstack20220117104810",
"freeform-tags": {},
"id": "ocid1.ormstack.oc1.phx.aaaaaaaa7jrci2s5iav5tdxpl6ucwo2dwazzrdkfhs6bxiohgcpkscmr57bq",
"lifecycle-state": "ACTIVE",
"stack-drift-status": "NOT_CHECKED",
"terraform-version": "1.0.x",
"time-created": "2022-01-17T10:48:10.878000+00:00",
"time-drift-last-checked": null,
"variables": {}
},
"etag": "dd62ace0b9e9d825d825c05d4588b73fede061e55b75de6436b84fb2bb794185"
}
"id": "ocid1.ormstack.oc1.phx.aaaaaaaa7jrci2s5iav5tdxpl6ucwo2dwazzrdkfhs6bxiohgcpkscmr57bq"
Étape 4 : Générer un plan d'exécution

Note :
Dans ce tutoriel, nous utilisons les commandes de l'interface de ligne de commande du gestionnaire de ressources OCI pour générer un plan d'exécution. Vous pouvez effectuer la même tâche à l'aide de la console du gestionnaire de ressources OCI.oci resource-manager job create-plan-job
–-stack-id <stack_OCID>
--display-name "<friendly_name>"
oci resource-manager job create-plan-job
--stack-id ocid1.ormstack.oc1.phx.aaaaaaaa7jrci2s5iav5tdxpl6ucwo2dwazzrdkfhs6bxiohgcpkscmr57bq
{
"data": {
"apply-job-plan-resolution": null,
"cancellation-details": {
"is-forced": false
},
"compartment-id": "ocid1.compartment.oc1..aaaaaaaawrmvqjzoegxbsixp5k3b5554vlv2kxukobw3drjho3f7nf5ca3ya",
"config-source": {
"config-source-record-type": "ZIP_UPLOAD"
},
"defined-tags": {},
"display-name": "ormjob20220117104856",
"failure-details": null,
"freeform-tags": {},
"id": "ocid1.ormjob.oc1.phx.aaaaaaaacrylnpglae4yvwo4q2r2tk5z5x5v6bwjsoxgn26moyg3eqwnt2aq",
"job-operation-details": {
"operation": "PLAN",
"terraform-advanced-options": {
"detailed-log-level": null,
"is-refresh-required": true,
"parallelism": 10
}
},
"lifecycle-state": "ACCEPTED",
"operation": "PLAN",
"resolved-plan-job-id": null,
"stack-id": "ocid1.ormstack.oc1.phx.aaaaaaaa7jrci2s5iav5tdxpl6ucwo2dwazzrdkfhs6bxiohgcpkscmr57bq",
"time-created": "2022-01-17T10:48:56.324000+00:00",
"time-finished": null,
"variables": {},
"working-directory": null
},
"etag": "a6f75ec1e205cd9105705fd7c8d65bf262159a7e733b27148049e70ce6fc14fe"
}
"id": "ocid1.ormjob.oc1.phx.aaaaaaaacrylnpglae4yvwo4q2r2tk5z5x5v6bwjsoxgn26moyg3eqwnt2aq",
"job-operation-details": {
"operation": "PLAN"
...
}
Sous-étape 4.1 : Réviser le plan d'exécution
oci resource-manager job get-job-logs
--job-id <plan_job_OCID>
oci resource-manager job get-job-logs
--job-id ocid1.ormjob.oc1.phx.aaaaaaaacrylnpglae4yvwo4q2r2tk5z5x5v6bwjsoxgn26moyg3eqwnt2aq
...
{
"level": "INFO",
"message": "Terraform used the selected providers to generate the following execution",
"timestamp": "2022-01-17T10:49:21.634000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": "plan. Resource actions are indicated with the following symbols:",
"timestamp": "2022-01-17T10:49:21.635000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + create",
"timestamp": "2022-01-17T10:49:21.635000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": "Terraform will perform the following actions:",
"timestamp": "2022-01-17T10:49:21.635000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " # oci_nosql_table.nosql_demo will be created",
"timestamp": "2022-01-17T10:49:21.635000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + resource \"oci_nosql_table\" \"nosql_demo\" {",
"timestamp": "2022-01-17T10:49:21.635000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + compartment_id = \"ocid1.compartment.oc1..aaaaaaaawrmvqjzoegxbsixp5k3b5554vlv2kxukobw3drjho3f7nf5ca3ya\"",
"timestamp": "2022-01-17T10:49:21.635000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + ddl_statement = \"CREATE TABLE if not exists demo (ticketNo INTEGER, fullName STRING, contactPhone STRING, confNo STRING, gender STRING, bagInfo JSON, PRIMARY KEY (ticketNo))\"",
"timestamp": "2022-01-17T10:49:21.635000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + is_auto_reclaimable = true",
"timestamp": "2022-01-17T10:49:21.635000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + name = \"demo\"",
"timestamp": "2022-01-17T10:49:21.635000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + table_limits {",
"timestamp": "2022-01-17T10:49:21.635000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + max_read_units = 10",
"timestamp": "2022-01-17T10:49:21.635000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + max_storage_in_gbs = 1",
"timestamp": "2022-01-17T10:49:21.635000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + max_write_units = 10",
"timestamp": "2022-01-17T10:49:21.635000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " # oci_nosql_table.nosql_demoKeyVal will be created",
"timestamp": "2022-01-17T10:49:21.635000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + resource \"oci_nosql_table\" \"nosql_demoKeyVal\" {",
"timestamp": "2022-01-17T10:49:21.635000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + compartment_id = \"ocid1.compartment.oc1..aaaaaaaawrmvqjzoegxbsixp5k3b5554vlv2kxukobw3drjho3f7nf5ca3ya\"",
"timestamp": "2022-01-17T10:49:21.635000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + ddl_statement = \"CREATE TABLE if not exists demoKeyVal (key INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1 NO CYCLE), value JSON, PRIMARY KEY (key))\"",
"timestamp": "2022-01-17T10:49:21.635000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + is_auto_reclaimable = true",
"timestamp": "2022-01-17T10:49:21.635000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + name = \"demoKeyVal\"",
"timestamp": "2022-01-17T10:49:21.635000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + table_limits {",
"timestamp": "2022-01-17T10:49:21.635000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + max_read_units = 10",
"timestamp": "2022-01-17T10:49:21.635000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + max_storage_in_gbs = 1",
"timestamp": "2022-01-17T10:49:21.635000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + max_write_units = 10",
"timestamp": "2022-01-17T10:49:21.636000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": "Plan: 2 to add, 0 to change, 0 to destroy.",
"timestamp": "2022-01-17T10:49:21.636000+00:00",
"type": "TERRAFORM_CONSOLE"
},
...
demo
et demoKeyVal
.{
...
"message": "Plan: 2 to add, 0 to change, 0 to destroy.",
...
}
Étape 5 : Exécuter une tâche d'application

- Pour spécifier une tâche de planification (application d'un plan d'exécution), utilisez
FROM_PLAN_JOB_ID
:oci resource-manager job create-apply-job --stack-id <stack_OCID> --execution-plan-strategy FROM_PLAN_JOB_ID --execution-plan-job-id <plan_job_OCID> --display-name "Example Apply Job"
- Pour approuver automatiquement la tâche d'application (sans spécifier de tâche de planification), utilisez
AUTO_APPROVED
:oci resource-manager job create-apply-job --stack-id <stack_OCID> --execution-plan-strategy AUTO_APPROVED --display-name "Example Apply Job"
oci resource-manager job create-apply-job
--stack-id ocid1.ormstack.oc1.phx.aaaaaaaa7jrci2s5iav5tdxpl6ucwo2dwazzrdkfhs6bxiohgcpkscmr57bq
--execution-plan-strategy AUTO_APPROVED
--display-name "Create NoSQL Tables Using Terraform"
{
"data": {
"apply-job-plan-resolution": {
"is-auto-approved": true,
"is-use-latest-job-id": null,
"plan-job-id": null
},
"cancellation-details": {
"is-forced": false
},
"compartment-id": "ocid1.compartment.oc1..aaaaaaaawrmvqjzoegxbsixp5k3b5554vlv2kxukobw3drjho3f7nf5ca3ya",
"config-source": {
"config-source-record-type": "ZIP_UPLOAD"
},
"defined-tags": {},
"display-name": "Create NoSQL Tables Using Terraform",
"failure-details": null,
"freeform-tags": {},
"id": "ocid1.ormjob.oc1.phx.aaaaaaaaqn4nsnfgi3th4rxolwqn3kftzzdpsw52pnfeyphi5dsxd6fhescq",
"job-operation-details": {
"execution-plan-job-id": null,
"execution-plan-strategy": "AUTO_APPROVED",
"operation": "APPLY",
"terraform-advanced-options": {
"detailed-log-level": null,
"is-refresh-required": true,
"parallelism": 10
}
},
"lifecycle-state": "ACCEPTED",
"operation": "APPLY",
"resolved-plan-job-id": null,
"stack-id": "ocid1.ormstack.oc1.phx.aaaaaaaa7jrci2s5iav5tdxpl6ucwo2dwazzrdkfhs6bxiohgcpkscmr57bq",
"time-created": "2022-01-17T10:54:46.346000+00:00",
"time-finished": null,
"variables": {},
"working-directory": null
},
"etag": "4042a300e8f678dd6da0f49ffeccefed66902b51331ebfbb559da8077a728126"
}
"id": "ocid1.ormjob.oc1.phx.aaaaaaaaqn4nsnfgi3th4rxolwqn3kftzzdpsw52pnfeyphi5dsxd6fhescq",
"job-operation-details": {
"operation": "APPLY"
...
}
Note :
Si vous utilisez un environnement hôte dédié, définissez la variable d'environnement CLIENT_HOST_OVERRIDES pour spécifier le point d'extrémité personnalisé avant d'exécuter la tâche. Exemple :export CLIENT_HOST_OVERRIDES=<oci_nosql.NosqlClient=https://ndcs.us-ashburn-1.oci.oc-test.com>
Sous-étape 5.1 : Vérifier le statut du travail
oci resource-manager job get
--job-id <job_OCID>
oci resource-manager job get
--job-id ocid1.ormjob.oc1.phx.aaaaaaaaqn4nsnfgi3th4rxolwqn3kftzzdpsw52pnfeyphi5dsxd6fhescq
{
"data": {
"apply-job-plan-resolution": {
"is-auto-approved": true,
"is-use-latest-job-id": null,
"plan-job-id": null
},
"cancellation-details": {
"is-forced": false
},
"compartment-id": "ocid1.compartment.oc1..aaaaaaaawrmvqjzoegxbsixp5k3b5554vlv2kxukobw3drjho3f7nf5ca3ya",
"config-source": {
"config-source-record-type": "ZIP_UPLOAD"
},
"defined-tags": {},
"display-name": "Create NoSQL Tables Using Terraform",
"failure-details": null,
"freeform-tags": {},
"id": "ocid1.ormjob.oc1.phx.aaaaaaaaqn4nsnfgi3th4rxolwqn3kftzzdpsw52pnfeyphi5dsxd6fhescq",
"job-operation-details": {
"execution-plan-job-id": null,
"execution-plan-strategy": "AUTO_APPROVED",
"operation": "APPLY",
"terraform-advanced-options": {
"detailed-log-level": null,
"is-refresh-required": true,
"parallelism": 10
}
},
"lifecycle-state": "SUCCEEDED",
"operation": "APPLY",
"resolved-plan-job-id": null,
"stack-id": "ocid1.ormstack.oc1.phx.aaaaaaaa7jrci2s5iav5tdxpl6ucwo2dwazzrdkfhs6bxiohgcpkscmr57bq",
"time-created": "2022-01-17T10:54:46.346000+00:00",
"time-finished": "2022-01-17T10:55:28.853000+00:00",
"variables": {},
"working-directory": null
},
"etag": "9e9f524b87e3c47b3f3ea3bbb4c1f956172a48e4c2311a44840c8b96e318bcaf--gzip"
}
{
...
"lifecycle-state": "SUCCEEDED",
...
}
Sous-étape 5.2 : Voir le journal d'un travail
oci resource-manager job get-job-logs-content
--job-id <job_OCID>
oci resource-manager job get-job-logs-content
--job-id ocid1.ormjob.oc1.phx.aaaaaaaaqn4nsnfgi3th4rxolwqn3kftzzdpsw52pnfeyphi5dsxd6fhescq
...
{
"level": "INFO",
"message": "Terraform will perform the following actions:",
"timestamp": "2022-01-17T10:55:05.580000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": "",
"timestamp": "2022-01-17T10:55:05.580000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " # oci_nosql_table.nosql_demo will be created",
"timestamp": "2022-01-17T10:55:05.580000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + resource \"oci_nosql_table\" \"nosql_demo\" {",
"timestamp": "2022-01-17T10:55:05.581000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + compartment_id = \"ocid1.compartment.oc1..aaaaaaaawrmvqjzoegxbsixp5k3b5554vlv2kxukobw3drjho3f7nf5ca3ya\"",
"timestamp": "2022-01-17T10:55:05.581000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + ddl_statement = \"CREATE TABLE if not exists demo (ticketNo INTEGER, fullName STRING, contactPhone STRING, confNo STRING, gender STRING, bagInfo JSON, PRIMARY KEY (ticketNo))\"",
"timestamp": "2022-01-17T10:55:05.581000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + is_auto_reclaimable = true",
"timestamp": "2022-01-17T10:55:05.581000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + name = \"demo\"",
"timestamp": "2022-01-17T10:55:05.581000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + table_limits {",
"timestamp": "2022-01-17T10:55:05.581000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + max_read_units = 10",
"timestamp": "2022-01-17T10:55:05.581000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + max_storage_in_gbs = 1",
"timestamp": "2022-01-17T10:55:05.581000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + max_write_units = 10",
"timestamp": "2022-01-17T10:55:05.581000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " # oci_nosql_table.nosql_demoKeyVal will be created",
"timestamp": "2022-01-17T10:55:05.581000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + resource \"oci_nosql_table\" \"nosql_demoKeyVal\" {",
"timestamp": "2022-01-17T10:55:05.581000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + compartment_id = \"ocid1.compartment.oc1..aaaaaaaawrmvqjzoegxbsixp5k3b5554vlv2kxukobw3drjho3f7nf5ca3ya\"",
"timestamp": "2022-01-17T10:55:05.581000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + ddl_statement = \"CREATE TABLE if not exists demoKeyVal (key INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1 NO CYCLE), value JSON, PRIMARY KEY (key))\"",
"timestamp": "2022-01-17T10:55:05.581000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + is_auto_reclaimable = true",
"timestamp": "2022-01-17T10:55:05.581000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + name = \"demoKeyVal\"",
"timestamp": "2022-01-17T10:55:05.581000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + table_limits {",
"timestamp": "2022-01-17T10:55:05.581000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + max_read_units = 10",
"timestamp": "2022-01-17T10:55:05.581000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + max_storage_in_gbs = 1",
"timestamp": "2022-01-17T10:55:05.581000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": " + max_write_units = 10",
"timestamp": "2022-01-17T10:55:05.581000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": "Plan: 2 to add, 0 to change, 0 to destroy.",
"timestamp": "2022-01-17T10:55:05.581000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": "oci_nosql_table.nosql_demoKeyVal: Creating...",
"timestamp": "2022-01-17T10:55:06.581000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": "oci_nosql_table.nosql_demo: Creating...",
"timestamp": "2022-01-17T10:55:06.582000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": "oci_nosql_table.nosql_demoKeyVal: Creation complete after 6s [id=ocid1.nosqltable.oc1.phx.amaaaaaau7x7rfyaqgpbjucp3s6jjzpnar4lg5yudxhwlqrlbd54l3wdo7hq]",
"timestamp": "2022-01-17T10:55:12.582000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": "oci_nosql_table.nosql_demo: Creation complete after 9s [id=ocid1.nosqltable.oc1.phx.amaaaaaau7x7rfyasvdkoclhgryulgzox3nvlxb2bqtlxxsrvrc4zxr6lo4a]",
"timestamp": "2022-01-17T10:55:15.583000+00:00",
"type": "TERRAFORM_CONSOLE"
},
{
"level": "INFO",
"message": "Apply complete! Resources: 2 added, 0 changed, 0 destroyed.",
"timestamp": "2022-01-17T10:55:15.583000+00:00",
"type": "TERRAFORM_CONSOLE"
},
...
demo
et demoKeyVal
.{
...
"message": "Apply complete! Resources: 2 added, 0 changed, 0 destroyed.",
...
}
Nous avons couvert beaucoup de détails dans ce tutoriel. Nous avons créé les fichiers de configuration terraform requis pour le déploiement des tables de base de données NoSQL sur le nuage OCI, puis configuré l'emplacement source pour ces fichiers. Nous avons ensuite utilisé l'interface de ligne de commande du gestionnaire de ressources OCI pour créer une pile, générer un plan d'exécution et exécuter la tâche d'application sur le plan d'exécution.
Déploiement d'une table Oracle NoSQL à l'aide de Terraform et du gestionnaire de ressources OCI