TerraformおよびOCIリソース・マネージャを使用したOracle NoSQL表のデプロイ
TerraformおよびResource Managerのスタックを使用して、OCI(Oracle Cloud Infrastructure)にNDCSテーブルを簡単にデプロイできます。OCI Resource Manager CLIを使用して、NDCS表をOracle Cloudにデプロイします。この記事に進む前に、NoSQL Cloud Serviceを認識しており、Terraformとともにその基本を理解していることを前提としています。
Terraformは、Terraformエンジンとサポートされるクラウド・プラットフォーム間のインタフェースとしてプロバイダを使用します。Oracle Cloud Infrastructure (OCI) Terraformプロバイダは、管理対象のOCIサービスにTerraformを接続するコンポーネントです。Terraform CloudやOCIリソース・マネージャなど、OCI Terraformプロバイダを使用できます。
OCIリソース・マネージャは、Terraformに基づくOracle管理サービスで、Terraform構成ファイルを使用して、OCI TerraformプロバイダでサポートされているOCIリソースのデプロイメントおよび操作を自動化します。Resource Managerを使用すると、複数のチームおよびプラットフォームにわたってインフラストラクチャ構成と状態ファイルを共有および管理できます。

- OCIでリソースを作成するには、terraformを構成する必要があります。terraformプロバイダ定義、NoSQLリソース定義、認証および入力変数の基本的なterraform構成ファイルを作成します。
- terraform構成ファイルの格納場所を決定します。これらのファイルは、ローカル・フォルダやzip、オブジェクト・ストレージ・バケット、ソース制御システム(GitHubやGitLabなど)などの様々なソースに格納できます。
- リソース・マネージャCLIコマンドを実行して、次のタスクを実行します:
- スタックを作成します
- 実行計画を生成して確認します。
- 適用ジョブを実行して、NoSQLリソースをプロビジョニングします。
- 必要に応じて、ログ・ファイルを確認します。
ノート:
Oracle Cloud Infrastructure (OCI) Resource Managerコマンドライン・インタフェース(CLI)を操作し、コンソールを使用してクラウド・シェルでこれらのコマンドを実行します。つまり、クラウド・テナンシに関する情報や、公開キー・ペアや秘密キー・ペアなどのその他の項目が役に立つ必要があります。ローカル・マシンでOCI CLIを構成する場合は、このドキュメンテーションを参照してください。この記事には次のトピックが含まれます:
サブステップ1.1: OCI Terraformプロバイダ構成の作成
OCI Terraformプロバイダ定義および関連する変数定義を含むprovider.tf
という名前の新しいファイルを作成します。OCI Terraformプロバイダには、region
引数のみが必要です。
- APIキー認証
- Instance Principal認可
- セキュリティ・トークン認証
region
引数は、プロバイダ・リソースが作成される地理的リージョンを指定します。単一の構成で複数のリージョンを対象にするには、各リージョンのプロバイダ定義を作成してから、次の例に示すようにプロバイダの別名を使用して区別します。「oci
」という名前のプロバイダが1つのみ定義されていますが、ociプロバイダ定義は、us-phoenix-1
リージョン(別名「phx
」)に対して1回とus-ashburn-1
リージョン(別名「iad
」)に対して1回、計2回入力されています。provider "oci" {
region = "us-phoenix-1"
alias = "phx"
}
provider "oci" {
region = "us-ashburn-1"
alias = "iad"
}
region
引数が必要です。APIキー認証には、tenancy_ocid
、user_ocid
、private_key_path
およびfingerprint
引数が必要です。region
およびAPIキー認証キー(tenancy_ocid
、user_ocid
、private_key_path
およびfingerprint
)の値を環境変数として、またはTerraform構成変数内で指定できます(サブステップ1.3: 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
およびfingerprint
属性を必要とすることなく、OCIコンピュート・インスタンスからAPIコールを行うことができます。
ノート:
インスタンス・プリンシパル認可は、Oracle Cloud Infrastructureで実行中のインスタンスにのみ適用されます。region
引数が必要であり、Instance Principal認可にはauth
引数が必要です。region
引数には、環境変数として、またはTerraform構成変数内で値を指定できます(サブステップ1.3: Terraform構成変数のロードを参照)。variable "region" {
}
provider "oci" {
auth = "InstancePrincipal"
region = var.region
}
ノート:
このトークンの有効期限は1時間後です。リソースプロビジョニングに1時間以上かかる場合は、この認証方法を使用しないでください。詳細は、トークンのリフレッシュを参照してください。region
引数が必要です。セキュリティ・トークン認証には、auth
およびconfig_file_profile
引数が必要です。
variable "region" {
}
variable "config_file_profile" {
}
provider "oci" {
auth = "SecurityToken"
config_file_profile = var.config_file_profile
region = var.region
}
サブステップ1.2: NoSQL Terraform構成の作成
NoSQL Database Cloud Serviceの表または索引を作成するためのNoSQLテラフォーム構成リソースを含む、nosql.tf
という名前の新しいファイルを作成します。NoSQLデータベース・リソースおよびデータ・ソースの詳細は、oci_nosql_tableを参照してください。
compartment_ocid
引数が必要です。compartment_ocid
の値は、環境変数として、またはTerraform構成変数内で指定できます(サブステップ1.3: 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
}
}
サブステップ1.3: Terraform構成変数のロード
次のステップでは、terraform.tfvars
という名前のファイルを作成し、認証方法に基づいて必要なOCI Terraformプロバイダ引数の値を指定します。
IAMアクセスおよび秘密キー(tenancy_ocid
、user_ocid
、private_key_path
およびfingerprint
)、region
およびcompartment_ocid
引数に値を指定します。NoSQL Database Cloud Serviceに対する十分な権限を持つシークレットおよびアクセス・キーを持つOCI IAMユーザーがすでに存在している必要があります。これらのキーを取得し、ファイルに格納します。
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"
region
およびcompartment_ocid
引数の値を指定します。
region = "us-phoenix-1"
compartment_ocid = "ocid1.compartment.oc1..aaaaaaaawrmvqjzoegxbsixp5k3b5554vlv2kxukobw3drjho3f7nf5ca3ya"
region
、compartment_ocid
およびconfig_file_profile
引数の値を指定します。
region = "us-phoenix-1"
compartment_ocid = "ocid1.compartment.oc1..aaaaaaaawrmvqjzoegxbsixp5k3b5554vlv2kxukobw3drjho3f7nf5ca3ya"
config_file_profile = "PROFILE"
サブステップ1.4: 入力変数の宣言
variables.tf
を作成し、その中の入力変数に値を割り当てます。ここをクリックして、Terraformのドキュメントを参照し、NoSQLデータベースで使用可能な有効な引数またはプロパティを確認します。この例では、NoSQL表の読取りユニット、書込みユニットおよび記憶域ユニットのデフォルト値は、それぞれ10
、10
および1
に設定されています。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
}
コンソールからCloud Shellを使用して、プロバイダ定義、NoSQLデータベース・リソース、認証値および入力変数に必要なすべてのterraform構成ファイルを作成しました。

ステップ2: Terraform構成の格納場所

Resource Managerを使用してスタックを作成する場合、次のソースからTerraform構成を選択できます。
- ローカル.zipファイル
- ローカル・フォルダ
- オブジェクト・ストレージ・バケット
バケットの最新の内容は、関連付けられたスタックで実行されているジョブによって自動的に使用されます。
- ソース・コード制御システム(GitHubやGitLabなど)
構成の最新バージョンは、関連付けられたスタックで実行されているすべてのジョブによって自動的に使用されます。
- テンプレート(Oracleまたはプライベート・テンプレートからの事前構築済Terraform構成)
- 既存のコンパートメント(リソース検出)
サブステップ2.1: リモートTerraform構成の構成ソース・プロバイダの作成
GitHubやGitLabなど、ソース・コントロール・システムでホストされているリモート・テラフォーム構成を使用する場合は、ソース構成プロバイダを作成する必要があります。
リモートTerraform構成の構成ソース・プロバイダを作成する方法の詳細は、構成ソース・プロバイダの管理を参照してください。
ステップ3: ファイルからのスタックの作成

ファイルの場所に関連するコマンドを使用します。Resource ManagerでサポートされているTerraform構成ソースについては、Terraform構成の格納場所を参照してください。
terraform.zip
からInstance Principal認証方法を使用してスタックを作成します。terraform.zip
ファイルには、次のファイルが含まれています。
provider.tf
nosql.tf
terraform.tfvars
variables.tf
ノート:
このチュートリアルでは、OCI Resource Manager CLIコマンドを使用してスタックを作成します。OCI Resource Managerコンソールを使用して同じタスクを実行できます。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
は、スタックを作成するコンパートメントのOCIDです。--config-source
は、1つ以上のTerraform構成ファイルを含む.zipファイルの名前です。- (オプション)
--variables
は、リソースの入力変数を指定するファイルのパスです。Terraformをローカルで実行する場合(インスタンス・プリンシパルを使用していない場合)、Oracle Cloud Infrastructure Terraformプロバイダには追加のパラメータが必要です。Terraformでの変数の使用の詳細は、入力変数を参照してください。入力変数の構成も参照してください。
- (オプション)
--display-name
は、新しいスタックのフレンドリ名です。 - (オプション)
--description
は、新しいスタックの説明です。 - (オプション)
--working-directory
は、ディレクトリのルート構成ファイルです。指定しない場合またはこの例のようにnullである場合、サービスは、ディレクトリ内のトップレベル・ファイルがルート構成ファイルであるとみなします。
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"
ステップ4: 実行計画の生成

ノート:
このチュートリアルでは、OCI Resource Manager CLIコマンドを使用して実行計画を生成します。OCI Resource Managerコンソールを使用して同じタスクを実行できます。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"
...
}
サブステップ4.1: 実行計画の確認
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
およびdemoKeyVal
)をデプロイします。{
...
"message": "Plan: 2 to add, 0 to change, 0 to destroy.",
...
}
ステップ5: 適用ジョブの実行

- 計画ジョブ(実行計画を「適用」)を指定するには、
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"
- 適用ジョブを自動的に承認する(計画ジョブは指定しない)には、
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"
...
}
ノート:
専用ホスト環境を使用している場合は、ジョブを実行する前に、環境変数CLIENT_HOST_OVERRIDESを設定してカスタム・エンドポイントを指定します。次に例を示します:export CLIENT_HOST_OVERRIDES=<oci_nosql.NosqlClient=https://ndcs.us-ashburn-1.oci.oc-test.com>
サブステップ5.1: ジョブのステータスの確認
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",
...
}
サブステップ5.2: ジョブのログの表示
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
およびdemoKeyVal
という2つのNoSQL表を正常にデプロイしました。{
...
"message": "Apply complete! Resources: 2 added, 0 changed, 0 destroyed.",
...
}
私たちはこのチュートリアルで多くの詳細をカバーしています。OCIクラウドへのNoSQLデータベース表のデプロイメントに必要なterraform構成ファイルを作成し、これらのファイルのソースの場所を構成しました。その後、OCI Resource Manager CLIを使用して、スタックを作成し、実行計画を生成し、実行計画で適用ジョブを実行しました。