Oracle NoSQL-Tabelle mit Terraform und OCI Resource Manager bereitstellen
Das Deployment von NDCS-Tabellen auf OCI (Oracle Cloud Infrastructure) mit Terraform und Resource Manager-Stack ist einfach. Wir verwenden die OCI Resource Manager-CLI, um NDCS-Tabellen in Oracle Cloud bereitzustellen. Bevor wir mit diesem Artikel fortfahren, wird davon ausgegangen, dass Sie NoSQL Cloud Service kennen und die zugehörigen Grundlagen sowie Terraform kennen.
Terraform verwendet Provider als Schnittstelle zwischen der Terraform-Engine und der unterstützten Cloud-Plattform. Der Oracle Cloud Infrastructure-(OCI-)Terraform-Provider ist eine Komponente, die Terraform mit den zu verwaltenden OCI-Services verbindet. Sie können den OCI-Terraform-Provider verwenden, einschließlich Terraform Cloud und OCI-Resource Manager.
Der OCI Resource Manager ist ein von Oracle verwalteter Service basierend auf Terraform, der Terraform-Konfigurationsdateien verwendet, um Deployment und Vorgänge für die OCI-Ressourcen zu automatisieren, die vom OCI-Terraform-Provider unterstützt werden. Mit Resource Manager können Sie Infrastrukturkonfigurationen und Statusdateien über mehrere Teams und Plattformen hinweg gemeinsam verwenden und verwalten.
- Um Ressourcen in OCI zu erstellen, müssen wir terraform konfigurieren. Erstellen Sie die grundlegenden Terraform-Konfigurationsdateien für Terraform-Providerdefinition, NoSQL-Ressourcendefinitionen, Authentifizierung und Eingabevariablen.
- Legen Sie fest, wo die terraform-Konfigurationsdateien gespeichert werden sollen. Sie können diese Dateien in verschiedenen Quellen speichern, wie lokalen Ordner oder ZIP, Object Storage-Bucket und Quellkontrollsysteme, wie GitHub oder GitLab.
- Führen Sie die Resource Manager-CLI-Befehle aus, um die folgenden Aufgaben auszuführen:
- Stack erstellen.
- Generieren und prüfen Sie den Ausführungsplan.
- Führen Sie den Job "Anwenden" aus, um NoSQL-Ressourcen bereitzustellen.
- Prüfen Sie die Logdateien, falls erforderlich.
Hinweis:
Wir arbeiten mit der Befehlszeilenschnittstelle (CLI) von Oracle Cloud Infrastructure (OCI) Resource Manager zusammen und führen diese Befehle in der Cloud Shell mit der Konsole aus. Das bedeutet, dass Sie einige Informationen zu Ihrem Cloud-Mandanten und anderen Elementen wie Public- oder Private-Key-Paare benötigen. Wenn Sie die OCI-CLI auf Ihrem lokalen Rechner konfigurieren möchten, lesen Sie diese Dokumentation.Dieser Artikel enthält die folgenden Themen:
Voraussetzungen
- Grundlegendes Verständnis von Terraform. Die kurze Einführung finden Sie hier.
- Ein Oracle Cloud-Account und ein Abonnement von Oracle NoSQL Database Cloud Service. Wenn Sie noch keinen Oracle Cloud-Account besitzen, können Sie hier starten.
- OCI-Terraform-Provider installiert und konfiguriert.
Unterschritt 1.1: OCI-Terraform-Providerkonfiguration erstellen
Erstellen Sie eine neue Datei namens "provider.tf
", die die OCI-Terraform-Providerdefinition sowie zugehörige Variablendefinitionen enthält. Der OCI-Terraform-Provider erfordert NUR das Argument region
.
- API-Authentifizierung
- Autorisierung des Instanz-Hauptelements
- Security Token-Authentifizierung
region
gibt die geografische Region an, in der die Providerressourcen erstellt werden. Um mehrere Regionen in einer einzelnen Konfiguration als Ziel zuzuweisen, erstellen Sie einfach eine Providerdefinition für jede Region, und unterscheiden Sie sich dann mithilfe eines Provideralias, wie im folgenden Beispiel dargestellt. Beachten Sie, dass nur ein Provider mit dem Namen "oci
" definiert ist, die OCI-Providerdefinition jedoch zweimal eingegeben wird, einmal für die Region us-phoenix-1
(mit dem Alias "phx
") und einmal für die Region us-ashburn-1
(mit dem Alias "iad
").provider "oci" {
region = "us-phoenix-1"
alias = "phx"
}
provider "oci" {
region = "us-ashburn-1"
alias = "iad"
}
region
für den OCI-Terraform-Provider erforderlich. Für die API-Schlüsselauthentifizierung sind die Argumente tenancy_ocid
, user_ocid
, private_key_path
und fingerprint
erforderlich. Sie können den Wert für region
und API-Schlüsselauthentifizierungsschlüssel (tenancy_ocid
, user_ocid
, private_key_path
und fingerprint
) als Umgebungsvariablen oder in Terraform-Konfigurationsvariablen angeben (wie unter Unterschritt 1.3: Terraform-Konfigurationsvariablen laden beschrieben).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
und fingerprint
in der Providerdefinition ausführen.
Hinweis:
Die Principal-Instanzautorisierung kann nur für Instanzen angewendet werden, die in Oracle Cloud Infrastructure ausgeführt werden.region
-Argument für den OCI-Terraform-Provider erforderlich, und ein auth
-Argument ist für die Instanz-Principal-Autorisierung erforderlich. Sie können den Wert für das Argument region
als Umgebungsvariablen oder in Terraform-Konfigurationsvariablen angeben (wie unter Unterschritt 1.3: Terraform-Konfigurationsvariablen laden erwähnt).variable "region" {
}
provider "oci" {
auth = "InstancePrincipal"
region = var.region
}
Hinweis:
Dieses Token läuft nach einer Stunde ab. Verwenden Sie diese Authentifizierungsmethode nicht, wenn das Provisioning von Ressourcen länger als eine Stunde dauert. Weitere Informationen finden Sie unter Token aktualisieren.region
ein Argument für den OCI-Terraform-Provider erforderlich. Die Argumente auth
und config_file_profile
sind für die Sicherheitstokenauthentifizierung erforderlich.
variable "region" {
}
variable "config_file_profile" {
}
provider "oci" {
auth = "SecurityToken"
config_file_profile = var.config_file_profile
region = var.region
}
Unterschritt 1.2: NoSQL-Terraform-Konfiguration erstellen
Erstellen Sie eine neue Datei namens "nosql.tf
", die die NoSQL terraform-Konfigurationsressourcen zum Erstellen von NoSQL Database Cloud Service-Tabellen oder -Indizes enthält. Weitere Informationen zu den Datenbankressourcen und Datenquellen NoSQL finden Sie unter oci_nosql_table.
compartment_ocid
ist für NoSQL-Datenbankressourcen wie Tabellen und Indizes erforderlich. Sie können den Wert für compartment_ocid
als Umgebungsvariablen oder in Terraform-Konfigurationsvariablen angeben (wie unter Unterschritt 1.3: Terraform-Konfigurationsvariablen laden erwähnt).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
}
}
Unterschritt 1.3: Terraform-Konfigurationsvariablen laden
Im nächsten Schritt erstellen Sie eine Datei namens "terraform.tfvars
" und geben Werte für die erforderlichen OCI-Terraform-Providerargumente basierend auf der Authentifizierungsmethode an.
Geben Sie Werte für die Argumente für den IAM-Zugriff und die Secret Keys (tenancy_ocid
, user_ocid
, private_key_path
und fingerprint
), region
und compartment_ocid
an. Sie sollten bereits einen OCI-IAM-Benutzer mit Secret- und Zugriffsschlüsseln mit ausreichenden Berechtigungen für NoSQL Database Cloud Service haben. Holen Sie diese Schlüssel und speichern Sie sie in der Datei.
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"
Geben Sie Werte für die Argumente region
und compartment_ocid
an.
region = "us-phoenix-1"
compartment_ocid = "ocid1.compartment.oc1..aaaaaaaawrmvqjzoegxbsixp5k3b5554vlv2kxukobw3drjho3f7nf5ca3ya"
Geben Sie Werte für die Argumente region
, compartment_ocid
und config_file_profile
an.
region = "us-phoenix-1"
compartment_ocid = "ocid1.compartment.oc1..aaaaaaaawrmvqjzoegxbsixp5k3b5554vlv2kxukobw3drjho3f7nf5ca3ya"
config_file_profile = "PROFILE"
Unterschritt 1.4: Eingabevariablen deklarieren
variables.tf
" zu erstellen und Eingabevariablen darin Werte zuzuweisen. Klicken Sie hier, um in der Terraform-Dokumentation nach den gültigen Argumenten oder Eigenschaften zu suchen, die für die Datenbank NoSQL verfügbar sind. Im Beispiel wird der Standardwert der Lese-, Schreib- und Speichereinheiten für die Tabelle NoSQL auf 10
, 10
bzw. 1
gesetzt.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
}
Mit Cloud Shell aus der Konsole haben wir alle erforderlichen Terraform-Konfigurationsdateien für Providerdefinition, NoSQL-Datenbankressourcen, Authentifizierungswerte und Eingabevariablen erstellt.
Schritt 2: Terraform-Konfigurationen speichern
Wenn Sie einen Stack mit Resource Manager erstellen, können Sie die Terraform-Konfiguration aus den folgenden Quellen auswählen.
- Lokale ZIP-Datei
- Ordner Lokal
- Objektspeicher-Bucket
Der aktuelle Inhalt des Buckets wird automatisch von jedem Job verwendet, der auf dem zugehörigen Stack ausgeführt wird.
- Quellcode-Kontrollsysteme, wie GitHub und GitLab
Die aktuelle Version Ihrer Konfiguration wird automatisch von jedem Job verwendet, der auf dem verknüpften Stack ausgeführt wird.
- Vorlage (vordefinierte Terraform-Konfiguration von Oracle oder eine private Vorlage)
- Vorhandenes Compartment (Resource Discovery)
Unterschritt 2.1: Konfigurationsquellenprovider für Remote-Terraform-Konfigurationen erstellen
Sie müssen einen Quellkonfigurationsprovider erstellen, wenn Sie die Remote-Terraform-Konfigurationen verwenden möchten, die auf einem Quellkontrollsystem gehostet werden, wie GitHub und GitLab.
Weitere Informationen zum Erstellen von Konfigurationsquellenprovidern für Remote-Terraform-Konfigurationen finden Sie unter Konfigurationsquellenprovider verwalten.
Schritt 3: Stack aus einer Datei erstellen
Verwenden Sie den Ihrem Dateipfad entsprechenden Befehl. Informationen zu Terraform-Konfigurationsquellen, die mit Resource Manager unterstützt werden, finden Sie unter Wo werden Ihre Terraform-Konfigurationen gespeichert.
terraform.zip
. Die terraform.zip
-Datei enthält die folgenden Dateien:
provider.tf
nosql.tf
terraform.tfvars
variables.tf
Hinweis:
In diesem Tutorial verwenden wir OCI Resource Manager-CLI-Befehle, um einen Stack zu erstellen. Sie können dieselbe Aufgabe mit der OCI Resource Manager-Konsole ausführen.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
ist die OCID des Compartment, in dem Sie den Stack erstellen möchten.--config-source
ist der Name einer ZIP-Datei, die eine oder mehrere Terraform-Konfigurationsdateien enthält.- (Optional)
--variables
ist der Pfad zu der Datei, in der Eingabevariablen für Ihre Ressourcen angegeben sind.Der Oracle Cloud Infrastructure-Terraform-Provider erfordert zusätzliche Parameter, wenn Terraform lokal ausgeführt wird (es sei denn, Sie verwenden Instanz-Principals). For more information on using variables in Terraform, see Input Variables. Siehe auch Konfiguration von Eingabevariablen.
- (Optional)
--display-name
ist der benutzerfreundliche Name für den neuen Stack. - (Optional)
--description
ist die Beschreibung für den neuen Stack. - (Optional)
--working-directory
ist die Root-Konfigurationsdatei im Verzeichnis. Wenn dieser Wert nicht angegeben oder wie in diesem Beispiel null ist, geht der Service davon aus, dass die Datei der obersten Ebene im Verzeichnis die Root-Konfigurationsdatei ist.
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"
Schritt 4: Ausführungsplan generieren
Hinweis:
In diesem Tutorial verwenden wir OCI Resource Manager-CLI-Befehle, um einen Ausführungsplan zu generieren. Sie können dieselbe Aufgabe mit der OCI Resource Manager-Konsole ausführen.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"
...
}
Unterschritt 4.1: Ausführungsplan prüfen
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
und demoKeyVal
.{
...
"message": "Plan: 2 to add, 0 to change, 0 to destroy.",
...
}
Schritt 5: Job "Anwenden" ausführen
- Um einen "Planen" -Job anzugeben (einen "Anwenden" eines Ausführungsplans):
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"
- Um den Job "Anwenden" automatisch zu genehmigen (kein Planjob angegeben), verwenden Sie
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"
...
}
Hinweis:
Wenn Sie eine dedizierte Hostumgebung verwenden, legen Sie die Umgebungsvariable CLIENT_HOST_OVERRIDES fest, um den benutzerdefinierten Endpunkt anzugeben, bevor Sie den Job ausführen. Beispiel:export CLIENT_HOST_OVERRIDES=<oci_nosql.NosqlClient=https://ndcs.us-ashburn-1.oci.oc-test.com>
Unterschritt 5.1: Jobstatus prüfen
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",
...
}
Unterschritt 5.2: Log für einen Job anzeigen
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
und demoKeyVal
.{
...
"message": "Apply complete! Resources: 2 added, 0 changed, 0 destroyed.",
...
}
Wir haben in diesem Tutorial viele Details behandelt. Wir haben Terraform-Konfigurationsdateien erstellt, die für das Deployment von NoSQL-Datenbanktabellen in der OCI-Cloud erforderlich sind, und dann den Quellspeicherort für diese Dateien konfiguriert. Anschließend haben wir mit der OCI Resource Manager-CLI einen Stack erstellt, einen Ausführungsplan generiert und einen Apply Job für den Ausführungsplan ausgeführt.
Oracle NoSQL-Tabelle mit Terraform und OCI Resource Manager bereitstellen