開始
このサンプルでは、Resource Managerを使用してOracle Cloud Infrastructureコンピュート・インスタンスを作成およびデプロイするために必要なタスクのエンドツーエンドの手順を提供します。
このページでは、Resource Managerの使用を開始できます。このエンドツーエンドのタスク手順を使用して、事前構築済のTerraform構成または独自のTerraform構成を使用してOracle Cloud Infrastructureコンピュート・インスタンスを作成およびデプロイします。リソース・マネージャの概要については、リソース・マネージャの概要を参照してください。
ハイライト
このウォークスルーでは、コンピュート・インスタンスを作成するための事前構築済のTerraform構成を提供するだけでなく、Terraform構成の記述方法を示すサンプルも提供します。使用する構成(事前作成済または独自の構成)にかかわらず、Resource ManagerはTerraformを使用して、定義されたリソースをプロビジョニングします。リソースは、ジョブを使用して作成およびプロビジョニングされるスタックに編成されます。
この手順では、次のタスクについて説明します:
- Terraform構成を選択または作成します。
- インフラストラクチャをプロビジョニングします:
- インフラストラクチャをプロビジョニングするスタックを作成します。
- スタックに対する計画ジョブを実行して、構成を解析し、実行計画を作成します。
- 生成された実行計画を確認します。
- スタックに対する適用ジョブを実行して、リソースをプロビジョニングします。適用ジョブは、Terraformの構成に基づく実行計画に従います。
- 結果のインフラストラクチャを確認します。
- オプションで、同じTerraform構成を使用して、より多くの環境でインフラストラクチャをプロビジョニングします。
開始する前に
前提条件をインストール、取得または作成したことを確認してください:
- リソースをプロビジョニングする環境ごとに、Oracle Cloud Infrastructureテナンシ。たとえば、Terraform構成に定義されているリソースを開発、ステージングおよび本番環境にプロビジョニングできます。ノート
各環境を独自のテナンシに配置することをお薦めします。 - スタックを作成するコンパートメントのOCID 。
- 次を含むユーザー・アカウント:
- API署名キー。ガイダンスは、必要なキーとOCIDを参照してください。
- IAM権限が必要です。詳細は、ポリシーの動作およびリソース・マネージャの詳細を参照してください。
- Oracle Cloud Infrastructure CLIを使用する場合は、最初にCLIをインストールして構成します。クイックスタートおよびCLIの構成を参照してください
タスク1a: 事前構築済のTerraform構成の選択
独自の構成を記述するかわりに、事前構築されたTerraform構成でコンピュート・インスタンステンプレートを選択できます。これらのステップでは、スタック作成プロセスを順を追って説明します。
- 次のリンクを選択して、コンピュート・インスタンス・テンプレートがすでに選択されている状態でスタックの作成ページを起動します。
- 「スタックの作成」ページで、新しいスタックの名前を入力します(または、表示されたデフォルトの名前を受け入れます)。機密情報を入力しないでください。
-
「コンパートメントに作成」ドロップダウンから、スタックを作成するコンパートメントを選択します。
リスト範囲のコンパートメントはデフォルトで設定されています。
-
「次」を選択します。
「変数の構成」パネルに、Terraform構成の変数が表示されます。
-
変数を確認し、必要に応じて変更します。
重要
秘密キーやその他の機密情報は、構成変数に追加しないでください。 - 「次」を選択します。
- 「確認」パネルで、スタック構成を確認します。
このウォークスルーでは、「適用の実行」を空白のままにします。(スタックの作成時にインフラストラクチャを自動的にプロビジョニングするには、このオプションを使用します。)
- 「作成」を選択してスタックを作成します。
新しいスタックの詳細ページが表示されます。
完了しました。コンピュート・インスタンス・テンプレートから事前構築されたTerraform構成のスタックが作成されました。次のステップは、インフラストラクチャのプロビジョニングです。
タスク1b: 独自のTerraform構成の作成
事前構築済のTerraform構成を選択しなかった場合は、次のステップに従って独自の構成を記述します。
Terraform構成は、インフラストラクチャを調整するファイルです。この構成により、Terraformプロバイダ、プロビジョニングしようとしているリソース、変数、およびリソースのプロビジョニングに関する特定の指示が定義されます。
このページでは、事前作成されたTerraform構成でコンピュート・インスタンス・テンプレートを選択するか、.zipファイル内の複数の.tfファイルを使用して独自の構成を記述します。
リソース・マネージャで使用する構成の作成の詳細は、リソース・マネージャのTerraform構成およびTerraform言語ドキュメントを参照してください。
Terraform構成にユーザー資格証明などの機密情報を指定しないでください。
次のコード・サンプルでは、基本的なOracle Cloud Infrastructure Terraformプロバイダを作成します。値は、変数ファイルまたはプロバイダ定義(.tf)ファイルのいずれかで定義されている変数として指定できます。詳細は、プロバイダ構成を参照してください。
provider "oci" {
region = "${var.region}"
}
リソースのプロビジョニング時に使用する変数を定義します。アップロードする構成パッケージに「変数」ファイルを作成することをお薦めします。次に、variables.tf
という名前の構成ファイルの例を示します。変数の使用の詳細は、入力変数の定義を参照してください。Input Variablesも参照してください。
variable "compartment_ocid" {
default = "ocid1.compartment.oc1..uniqueid"
}
variable "region" {
default = "us-phoenix-1"
}
variable "InstanceImageOCID" {
type = "map"
default = {
// See https://docs.cloud.oracle.com/images/
// Platform image "Oracle-Linux-7.5-2018.10.16-0"
"eu-frankfurt-1" = "ocid1.image.oc1.eu-frankfurt-1.aaaaaaaaitzn6tdyjer7jl34h2ujz74jwy5nkbukbh55ekp6oyzwrtfa4zma"
"uk-london-1" = "ocid1.image.oc1.uk-london-1.aaaaaaaa32voyikkkzfxyo4xbdmadc2dmvorfxxgdhpnk6dw64fa3l4jh7wa"
"us-ashburn-1" = "ocid1.image.oc1.iad.aaaaaaaageeenzyuxgia726xur4ztaoxbxyjlxogdhreu3ngfj2gji3bayda"
"us-phoenix-1" = "ocid1.image.oc1.phx.aaaaaaaaoqj42sokaoh42l76wsyhn3k2beuntrh5maj3gmgmzeyr55zzrwwa"
}
}
variable "ssh_public_key" {
default = "ssh-rsa <public_key_value>"
}
# Defines the number of instances to deploy
variable "NumInstances" {
default = "1"
}
variable "InstanceShape" {
default = "VM.Standard2.1"
}
# Specifies the Availability Domain
variable "localAD" {
default = "<AD_name>"
}
前述の例で宣言された変数の詳細は、次を参照してください:
InstanceImageOCID
: プラットフォーム・イメージInstanceShape
: コンピュート・シェイプregion
およびlocalAD
: リージョンおよび可用性ドメイン
スキーマ・ドキュメントを使用すると、開発、ステージングおよび本番環境で1つの編集されていないTerraform構成を再利用できます。スキーマ・ドキュメントを含むTerraform構成でスタックを作成すると、リソース・マネージャから変数値の入力を求められます。
リソース・マネージャを使用する場合は、Terraform構成にスキーマ・ドキュメントをお薦めします。スキーマ・ドキュメントを含めると、Oracle Cloud Infrastructure Consoleでページを拡張できます。「スタックの作成」ページの変数エントリを容易にするには、SSHキー・コントロールを表示し、名前を付け、グループ化し、値を動的に事前移入します。作成されたスタックに対して開く「スタック詳細」ページの「アプリケーション情報」タブでテキストを定義します。
次に、このシナリオの基本詳細を説明するスキーマ・ドキュメントの例(schema.yaml
)の内容を示します。
locale: "en"
variableGroups:
- title: "Destination"
variables:
- compartment_ocid
- ${region}
- ${localAD}
- title: "Instance Details"
variables:
- ${numInstances}
- ${instanceImageOCID}
- ${instanceShape}
- title: "SSH Public Key"
variables:
- ${ssh_public_key}
variables:
compartment_ocid:
type: oci:identity:compartment:id
required: true
title: Compartment OCID
region:
type: oci:identity:region:name
required: true
title: Region
localAD:
type: oci:identity:availabilitydomain:name
required: true
title: Availability Domain
dependsOn:
compartmentId: compartment_ocid
numInstances:
type: integer
required: true
title: Number of Instances
minimum: 1
maximum: 10
multipleOf: 1
instanceImageOCID:
type: oci:core:image:id
required: true
title: Instance Image OCID
dependsOn:
compartmentId: compartment_ocid
instanceShape:
type: oci:core:instanceshape:name
required: true
title: Instance Shape
default: "VM.Standard.E2.1.Micro"
dependsOn:
compartmentId: compartment_ocid
ssh_public_key:
type: oci:core:ssh:publickey
required: true
title: SSH Public Key
次のコード・サンプルでは、「ExampleVCN」という名前のOracle Cloud Infrastructure仮想クラウド・ネットワーク(VCN)を作成します。
resource "oci_core_virtual_network" "ExampleVCN" {
cidr_block = "10.1.0.0/16"
compartment_id = "${var.compartment_ocid}"
display_name = "TFExampleVCN"
dns_label = "tfexamplevcn"
}
次のコード例では、前のコード例に定義したVCNに、「ExampleSubnet」という名前のサブネットを作成します。
resource "oci_core_subnet" "ExampleSubnet" {
availability_domain = "${var.localAD}"
cidr_block = "10.1.20.0/24"
display_name = "TFExampleSubnet"
dns_label = "tfexamplesubnet"
security_list_ids = ["${oci_core_virtual_network.ExampleVCN.default_security_list_id}"]
compartment_id = "${var.compartment_ocid}"
vcn_id = "${oci_core_virtual_network.ExampleVCN.id}"
route_table_id = "${oci_core_route_table.ExampleRT.id}"
dhcp_options_id = "${oci_core_virtual_network.ExampleVCN.default_dhcp_options_id}"
}
次のコード・サンプルでは、作成したVCN内に「ExampleIG」という名前のインターネット・ゲートウェイを作成しています。
resource "oci_core_internet_gateway" "ExampleIG" {
compartment_id = "${var.compartment_ocid}"
display_name = "TFExampleIG"
vcn_id = "${oci_core_virtual_network.ExampleVCN.id}"
}
次のコード・サンプルでは、VCN内にOracle Cloud Infrastructureコア・ルート表を作成し、2つのルート・ルールを適用します。
resource "oci_core_route_table" "ExampleRT" {
compartment_id = "${var.compartment_ocid}"
vcn_id = "${oci_core_virtual_network.ExampleVCN.id}"
display_name = "TFExampleRouteTable"
route_rules {
cidr_block = "0.0.0.0/0"
network_entity_id = "${oci_core_internet_gateway.ExampleIG.id}"
}
}
次の例では、Oracle Cloud Infrastructureコンピュート・インスタンスを作成します。また、コードは、コンピュート・インスタンスが作成されたイメージを参照し、ブート・ボリューム・サイズを設定し、必須メタデータを追加し、フリーフォーム・タグと定義タグの両方を適用します。
resource "oci_core_instance" "TFInstance" {
count = "${var.NumInstances}"
availability_domain = "${var.localAD}"
compartment_id = "${var.compartment_ocid}"
display_name = "TFInstance${count.index}"
shape = "${var.InstanceShape}"
create_vnic_details {
subnet_id = "${oci_core_subnet.ExampleSubnet.id}"
display_name = "primaryvnic"
assign_public_ip = true
hostname_label = "tfexampleinstance${count.index}"
}
source_details {
source_type = "image"
source_id = "${var.InstanceImageOCID[var.region]}"
# Apply this to set the size of the boot volume that's created for this instance.
# Otherwise, the default boot volume size of the image is used.
# This should only be specified when source_type is set to "image".
#boot_volume_size_in_gbs = "60"
}
# Apply the following flag only if you wish to preserve the attached boot volume upon destroying this instance
# Setting this and destroying the instance will result in a boot volume that should be managed outside of this config.
# When changing this value, make sure to run 'terraform apply' so that it takes effect before the resource is destroyed.
#preserve_boot_volume = true
metadata = {
ssh_authorized_keys = "${var.ssh_public_key}"
}
timeouts {
create = "60m"
}
}
すべての構成ファイルが単一ディレクトリにあることを確認します。Terraform構成ファイルは、ローカルに格納するか、ソース・コード制御システムを使用して格納できます。ソース・コード制御システムへのファイルの格納の詳細は、構成ソース・プロバイダの管理を参照してください。ファイルが格納されている場合はいつでも、CLIまたはコンソールを使用してスタックを作成するときに、そのファイルを選択できます。
タスク2: インフラストラクチャのプロビジョニング
Terraform構成を使用して、次のアクションを実行してインフラストラクチャを構築およびデプロイします:
-
独自のTerraform構成を作成した場合は、次のステップに従って、選択したテナンシ・コンパートメントにスタックを作成します。(事前作成構成を選択した場合は、このステップをスキップします。)
Resource ManagerでサポートされているTerraform構成ソースについては、Terraform構成の格納場所を参照してください。
スタックとは、グループとして操作できるリソースの集合です。構成内に指定したすべてのリソースは、作成したスタック内にプロビジョニングされます。
スタックは、ソース・コード制御システム(Gitなど)、オブジェクト・ストレージ・バケット、またはアップロードしたローカルでアクセスできる.zipファイルから作成できます。ローカルファイルの手順は次のとおりです。
.zipファイル(コンソール)からスタックを作成するには- ナビゲーション・メニューを開き、「開発者サービス」を選択します。「リソース・マネージャ」で、「スタック」を選択します。
-
「リスト範囲」で、作業する権限があるコンパートメントを選択します。
-
「スタックの作成」を選択します。
「スタックの作成」ページが開き、「スタック情報」タブが選択されます。
-
「スタックの作成」ページの「Terraform構成の起点の選択」で、「自分の構成」を選択します。
-
「スタック構成」で、「.Zipファイル」を選択し、Terraform構成を追加します。
Terraform構成の.zipファイルをコントロールにドラッグ・アンド・ドロップするか、「参照」を選択して.zipファイルの場所に移動できます。
構成をリモートに格納することもできます。たとえば、Gitまたはオブジェクト・ストレージ・バケットに構成を格納します。
このページには、Terraform構成に含まれる情報が移入されます。
- 残りのフィールドの値を入力します。
名前 内容 カスタム・プロバイダの使用 カスタム・プロバイダを使用するには、このオプションを選択し、カスタム・プロバイダを含むバケットを選択します。 名前 スタック名。デフォルト名を使用できます。機密情報を入力しないでください。 説明 スタックの説明(オプション)。 コンパートメントの作成 スタックを作成するコンパートメント。リスト範囲のコンパートメントはデフォルトで設定されています。 Terraformのバージョン Terraform構成に必要なバージョン。 タグ オプションで、tagsをスタックに適用します。 -
「次」を選択します。
「変数の構成」パネルには、Terraform構成の変数がリストされます。
変数を確認し、必要に応じて変更します。
構成変数に秘密キーやその他の機密情報を追加しないでください。-
「次」を選択します。
-
「確認」パネルで、スタック構成を確認します。
-
スタックの作成時にリソースを自動的にプロビジョニングするには、「適用の実行」を選択します。
-
「作成」を選択して、スタックを作成します。
スタックが作成され、その詳細ページが開きます。
「適用の実行」を選択した場合、リソース・マネージャは新しいスタックで適用アクションを実行します。
.zipファイル(CLI)からスタックを作成するにはファイルの場所に関連するコマンドを使用します。
リモートのバージョン管理されたファイルからスタックを作成するにはoci resource-manager stack create-from-git-provider
コマンドおよび必須パラメータを使用して、Gitからスタックを作成します。oci resource-manager stack create-from-git-provider [OPTIONS]
CLIコマンドのパラメータおよび値の完全なリストは、リソース・マネージャ・コマンドライン・リファレンスを参照してください。
リクエストの例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 "My Test" --variables file://variables.json --working-directory ""
.zipファイルからスタックを作成するにはノート
Windowsで、zipファイルとvariables.jsonファイルが、CLIを実行するディレクトリと同じディレクトリにあることを確認してください。現在、CLIにはWindowsの制限があり、いずれかのファイルがサブディレクトリにある場合に、ファイルを正しく処理できません。oci resource-manager stack create
コマンドおよび必須パラメータを使用して、ローカルzipファイルからスタックを作成します。oci resource-manager stack create [OPTIONS]
CLIコマンドのパラメータおよび値の完全なリストは、リソース・マネージャ・コマンドライン・リファレンスを参照してください。
リクエストの例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 "My Tutorial to Create a VCN" --working-directory ""
レスポンスの例{ "data": { config-source": { "working-directory": null, "config-source-type": "ZIP_UPLOAD" }, "defined-tags": {}, "description": "My Tutorial to Create a VCN", "display-name": "My Example Stack", "freeform-tags": {}, "id": "ocid1.ormstack.oc1..uniqueid", "lifecycle-state": "ACTIVE", "time-created": "2019-04-03T18:26:56.299000+00:00", "variables": { "compartment_ocid": "ocid1.compartment.oc1..uniqueid", "region": "us-phoenix-1" } } }
-
実行計画を生成します。
計画ジョブは、構成を解析して「実行計画」を作成します。これは、ジョブのログ・エントリにおける計画済のデプロイメントを段階的に表したものです。計画ジョブが完了したら、ジョブのログ・エントリを表示して、想定された操作を実行していることを確認し、目的の順序で実行計画を評価できます。
計画ジョブを実行するには(コンソール)- ナビゲーション・メニューを開き、「開発者サービス」を選択します。「リソース・マネージャ」で、「スタック」を選択します。
-
「リスト範囲」で、作業する権限があるコンパートメントを選択します。
-
目的のスタックの名前を選択します。
「スタックの詳細」ページが開きます。
-
「プラン」を選択します。
-
「プラン」パネルで、「名前」を確認し、オプションで変更します。
-
「プラン」を選択します。
プラン・ジョブが作成されます。新しいジョブが「ジョブ」の下にリストされます。
ジョブの詳細を取得して、ジョブ・ステータス(ライフサイクル状態)をモニターします。成功(
SUCCEEDED
)は、ジョブが完了したことを示します。ジョブの複雑さによっては、操作に時間がかかる場合があります。ジョブの実行中または終了後に、ジョブ・ログの内容を取得できます。
計画ジョブを実行するには(CLI)oci resource-manager job create-plan-job
コマンドおよび必須パラメータを使用して、計画ジョブを実行します。oci resource-manager job create-plan-job [OPTIONS]
CLIコマンドのパラメータおよび値の完全なリストは、リソース・マネージャ・コマンドライン・リファレンスを参照してください。
ジョブの詳細を取得して、ジョブ・ステータス(ライフサイクル状態)をモニターします。成功(
SUCCEEDED
)は、ジョブが完了したことを示します。ジョブの複雑さによっては、操作に時間がかかる場合があります。ジョブの実行中または終了後に、ジョブ・ログの内容を取得できます。 -
実行計画を確認し、意図していることを確認します。
実行計画は、以前に実行した計画ジョブのログに示されます。
実行計画(計画ジョブのログ)を確認するには(コンソール)-
ナビゲーション・メニューを開き、「開発者サービス」を選択します。「リソース・マネージャ」で、「ジョブ」を選択します。
スタック詳細ページからジョブにアクセスすることもできます。「スタック」を選択し、必要なスタックの名前を選択します。
-
「リスト範囲」で、作業する権限があるコンパートメントを選択します。
-
実行した計画ジョブの名前を選択します。
「ジョブの詳細」ページが開きます。ログが表示されます(「リソース」の「ログ」セクション)。
計画ジョブの場合、ログ・ファイルは実行計画です。計画ジョブのログ・ファイルを表示し、ログ・ファイルの一連のログ・エントリで「メッセージ」フィールドをメモします。これらの値は、構成で指定されている一連の操作を表します。
-
(オプション)「リソース」の「ログ」セクションで、「ログのダウンロード」を選択します。
変更が必要な場合は、修正された構成を使用するようにスタックを更新し、別の計画ジョブを実行して更新された実行計画を取得します。
実行計画(計画ジョブのログ)を確認するには(CLI)oci resource-manager job get-job-logs
コマンドおよび必須パラメータを使用して、エントリのページ付けされたリストとしてジョブのログを取得します。oci resource-manager job get-job-logs [OPTIONS]
CLIコマンドのパラメータおよび値の完全なリストは、リソース・マネージャ・コマンドライン・リファレンスを参照してください。
プラン・ジョブに対するレスポンスの例このコマンドでは、ログ・エントリを記述するJSONオブジェクトが返されます。各オブジェクトには、実行計画の1行を表示するプロパティを持つメッセージ・メンバーが含まれます。この例では、計画ジョブは1つの仮想クラウド・ネットワーク(VCN)を作成します。残りのメンバーにはVCNに関する詳細が表示されます。
... { "level": "INFO", "message": "Terraform will perform the following actions:", "timestamp": "2018-05-24T00:57:14.170000+00:00", "type": "TERRAFORM_CONSOLE" }, { "level": "INFO", "message": "", "timestamp": "2018-05-24T00:57:14.170000+00:00", "type": "TERRAFORM_CONSOLE" }, { "level": "INFO", "message": "+ oci_core_virtual_network.vcn1", "timestamp": "2018-05-24T00:57:14.170000+00:00", "type": "TERRAFORM_CONSOLE" }, { "level": "INFO", "message": "id: <computed>", "timestamp": "2018-05-24T00:57:14.172000+00:00", "type": "TERRAFORM_CONSOLE" }, { "level": "INFO", "message": "cidr_block: \"10.0.0.0/16\", "timestamp": "2018-05-24T00:57:14.172000+00:00", "type": "TERRAFORM_CONSOLE" }, { "level": "INFO", "message": "compartment_id: \"ocid1.tenancy.oc1..exampleaqnpcpfqfmrf6dw5gcew7yqpirvarueirj2mv4jzn5goejsxma\", "timestamp": "2018-05-24T00:57:14.172000+00:00", "type": "TERRAFORM_CONSOLE" }, { "level": "INFO", "message": "default_dhcp_options_id: <computed_value>", "timestamp": "2018-05-24T00:57:14.172000+00:00", "type": "TERRAFORM_CONSOLE" }, { "level": "INFO", "message": " default_route_table_id: <computed_value>", "timestamp": "2018-05-24T00:57:14.172000+00:00", "type": "TERRAFORM_CONSOLE" }, { "level": "INFO", "message": " default_security_list_id: <computed_value>", "timestamp": "2018-05-24T00:57:14.172000+00:00", "type": "TERRAFORM_CONSOLE" }, ...
変更が必要な場合は、修正された構成を使用するようにスタックを更新し、別の計画ジョブを実行して更新された実行計画を取得します。
-
-
実行計画に対して適用ジョブを実行して、リソースをプロビジョニングします。
実行計画が完了したら、定義したリソースをスタックにプロビジョニングする作業を実行できます。適用ジョブは実行計画を取得し、それをスタックに「適用」します。結果は、完全にプロビジョニングされたスタックです。
適用ジョブを実行するには(コンソール)-
ナビゲーション・メニューを開き、「開発者サービス」を選択します。「リソース・マネージャ」で、「スタック」を選択します。
-
「リスト範囲」で、作業する権限があるコンパートメントを選択します。
-
作成したスタックの名前を選択します。
「スタックの詳細」ページが開きます。
-
「適用」を選択します。
-
(オプション)「適用」パネルで、適用ジョブの名前およびその他の設定を確認し、必要に応じて更新します。
-
「適用」を選択します。
適用ジョブが作成されます。新しいジョブが「ジョブ」の下にリストされます。
ジョブの詳細を取得して、ジョブ・ステータス(ライフサイクル状態)をモニターします。成功(
SUCCEEDED
)は、ジョブが完了したことを示します。ジョブの複雑さによっては、操作に時間がかかる場合があります。ジョブの実行中または終了後に、ジョブ・ログの内容を取得できます。新規にプロビジョニングされたリソースの存在を確認するには、コンパートメントでリソースを検査します。
適用ジョブを実行するには(CLI)oci resource-manager job create-apply-job
コマンドおよび必須パラメータを使用して、適用ジョブを実行します。oci resource-manager job create-apply-job [OPTIONS]
CLIコマンドのパラメータおよび値の完全なリストは、リソース・マネージャ・コマンドライン・リファレンスを参照してください。
サンプル例1: 計画ジョブを参照します。
oci resource-manager job create-apply-job --execution-plan-strategy <plan_job_ocid> --stack-id <stack_ocid>
例2: 自動承認(プラン・ジョブを参照しない)
oci resource-manager job create-apply-job --execution-plan-strategy AUTO_APPROVED --stack-id <stack_ocid>
ジョブの詳細を取得して、ジョブ・ステータス(ライフサイクル状態)をモニターします。成功(
SUCCEEDED
)は、ジョブが完了したことを示します。ジョブの複雑さによっては、操作に時間がかかる場合があります。ジョブの実行中または終了後に、ジョブ・ログの内容を取得できます。新規にプロビジョニングされたリソースの存在を確認するには、コンパートメントでリソースを検査します。
-
- 実行した適用ジョブのログ・エントリと状態ファイルを確認します。
ジョブの詳細は、ジョブ・ログのエントリを参照してください。
ジョブ・ログを表示するには(コンソール)-
ナビゲーション・メニューを開き、「開発者サービス」を選択します。「リソース・マネージャ」で、「ジョブ」を選択します。
スタック詳細ページからジョブにアクセスすることもできます。「スタック」を選択し、必要なスタックの名前を選択します。
-
「リスト範囲」で、作業する権限があるコンパートメントを選択します。
-
実行した適用ジョブの名前を選択します。
「ジョブの詳細」ページが開きます。ログが表示されます(「リソース」の「ログ」セクション)。
-
(オプション)「リソース」の「ログ」セクションで、「ログのダウンロード」を選択します。
ジョブ・ログを表示するには(CLI)ログ・ファイルを表示して、ログ・ファイルの一連のログ・エントリで「メッセージ」フィールドをメモします。指定したジョブのログ・ファイルをエントリのページ付けされたリストまたは生の形式で表示できます。
ページ化されたエントリのリストを表示するにはoci resource-manager job get-job-logs
コマンドおよび必須パラメータを使用して、エントリのページ付けされたリストとしてジョブのログを取得します。oci resource-manager job get-job-logs [OPTIONS]
CLIコマンドのパラメータおよび値の完全なリストは、リソース・マネージャ・コマンドライン・リファレンスを参照してください。
プラン・ジョブに対するレスポンスの例このコマンドでは、ログ・エントリを記述するJSONオブジェクトが返されます。各オブジェクトには、実行計画の1行を表示するプロパティを持つメッセージ・メンバーが含まれます。この例では、計画ジョブは1つの仮想クラウド・ネットワーク(VCN)を作成します。残りのメンバーにはVCNに関する詳細が表示されます。
... { "level": "INFO", "message": "Terraform will perform the following actions:", "timestamp": "2018-05-24T00:57:14.170000+00:00", "type": "TERRAFORM_CONSOLE" }, { "level": "INFO", "message": "", "timestamp": "2018-05-24T00:57:14.170000+00:00", "type": "TERRAFORM_CONSOLE" }, { "level": "INFO", "message": "+ oci_core_virtual_network.vcn1", "timestamp": "2018-05-24T00:57:14.170000+00:00", "type": "TERRAFORM_CONSOLE" }, { "level": "INFO", "message": "id: <computed>", "timestamp": "2018-05-24T00:57:14.172000+00:00", "type": "TERRAFORM_CONSOLE" }, { "level": "INFO", "message": "cidr_block: \"10.0.0.0/16\", "timestamp": "2018-05-24T00:57:14.172000+00:00", "type": "TERRAFORM_CONSOLE" }, { "level": "INFO", "message": "compartment_id: \"ocid1.tenancy.oc1..exampleaqnpcpfqfmrf6dw5gcew7yqpirvarueirj2mv4jzn5goejsxma\", "timestamp": "2018-05-24T00:57:14.172000+00:00", "type": "TERRAFORM_CONSOLE" }, { "level": "INFO", "message": "default_dhcp_options_id: <computed_value>", "timestamp": "2018-05-24T00:57:14.172000+00:00", "type": "TERRAFORM_CONSOLE" }, { "level": "INFO", "message": " default_route_table_id: <computed_value>", "timestamp": "2018-05-24T00:57:14.172000+00:00", "type": "TERRAFORM_CONSOLE" }, { "level": "INFO", "message": " default_security_list_id: <computed_value>", "timestamp": "2018-05-24T00:57:14.172000+00:00", "type": "TERRAFORM_CONSOLE" }, ...
RAW形式でログを表示するにはジョブのログ・コンテンツを取得するには、
oci resource-manager job get-job-logs-content
コマンドおよび必須パラメータを使用します。oci resource-manager job get-job-logs-content [OPTIONS]
CLIコマンドのパラメータおよび値の完全なリストは、リソース・マネージャ・コマンドライン・リファレンスを参照してください。
-
ジョブ状態ファイルは、ジョブのJSON形式の出力を表します。
状態ファイルは、スタックのリソースを構成にマップし、リソースの依存関係などの必須の構成メタデータも保持します。リソース・マネージャはジョブの実行時に状態ファイルを自動的に生成および更新します。
リソース・マネージャは、特定のスタック上で一度に1つのジョブのみを実行できるようにすることで状態のロックをサポートします。状態ファイルの詳細は、「状態」を参照してください。
ジョブの状態を表示するには(コンソール)-
ナビゲーション・メニューを開き、「開発者サービス」を選択します。「リソース・マネージャ」で、「ジョブ」を選択します。
スタック詳細ページからジョブにアクセスすることもできます。「スタック」を選択し、必要なスタックの名前を選択します。
-
「リスト範囲」で、作業する権限があるコンパートメントを選択します。
-
ジョブの名前を選択します。
「ジョブの詳細」ページが開きます。
-
「Terraform構成のダウンロード」を選択します。
ジョブの状態を表示するには(CLI)oci resource-manager job get-job-tf-state
コマンドおよび必須パラメータを使用して、ジョブの状態を取得します。oci resource-manager job get-job-tf-state [OPTIONS]
CLIコマンドのパラメータおよび値の完全なリストは、リソース・マネージャ・コマンドライン・リファレンスを参照してください。
レスポンスの例:
{ "data": { "lineage": "57ef4f0c-c8cd-8a32-d45f-d2c40be7b915", "modules": [ { "depends_on": [], "outputs": {}, "path": [ "root" ], "resources": { "oci_core_virtual_network.vcn1": { "depends_on": [], "deposed": [], "primary": { "attributes": { "cidr_block": "10.0.0.0/16", "compartment_id": "ocid1.tenancy.oc1..uniqueid", "default_dhcp_options_id": "ocid1.dhcpoptions.oc1.phx.uniqueid", "default_route_table_id": "ocid1.routetable.oc1.phx.uniqueid", "default_security_list_id": "ocid1.securitylist.oc1.phx.uniqueid", "display_name": "My VCN display name", "dns_label": "myvcntest", "id": "ocid1.vcn.oc1.phx.uniqueid", "state": "AVAILABLE", "time_created": "2018-05-24 01:13:05.855 +0000 UTC", "vcn_domain_name": "myvcntest.oraclevcn.com" }, "id": "ocid1.vcn.oc1.phx.uniqueid", "meta": { "e2bfb730-ecaa-11e6-8f88-34363bc7c4c0": { "create": 300000000000, "delete": 300000000000, "update": 300000000000 } }, "tainted": false }, "provider": "provider.oci", "type": "oci_core_virtual_network" } } } ], "serial": 4, "terraform_version": "0.11.7", "version": 3 } }
-
-
プロビジョニングされたリソースを解放する必要があるときには、スタック上で破棄ジョブを実行します。
破棄ジョブは、作成したスタックを分解してから、関連付けられたリソースを削除せずにクリーンアップします。たとえば、破棄ジョブはスタックに関連付けられたコンピュート・インスタンスを終了します。
ノート
スタックを削除して関連リソースを解放する前に、破棄ジョブを実行することをお薦めします。スタックを削除すると、関連する状態ファイルも削除されるため、関連するリソースの状態のトラッキングが失われます。削除されたスタックに関連付けられているリソースのクリーンアップは、特にそれらのリソースが複数のコンパートメントにまたがる場合、状態ファイルなしでは困難になる可能性があります。後で困難なクリーンアップを回避するために、破棄ジョブを実行して関連付けられたリソースを最初に解放することをお薦めします。
破棄されたリソースからデータをリカバリすることはできません。
破棄ジョブを実行するには(コンソール)-
ナビゲーション・メニューを開き、「開発者サービス」を選択します。「リソース・マネージャ」で、「スタック」を選択します。
-
「リスト範囲」で、作業する権限があるコンパートメントを選択します。
-
目的のスタックの名前を選択します。
「スタックの詳細」ページが開きます。
- 「破棄」を選択します。
-
(オプション)「破棄」パネルで、適用ジョブの名前およびその他の設定を確認し、必要に応じて更新します。
-
「破棄」を選択します。
破棄ジョブが作成されます。新しいジョブが「ジョブ」の下にリストされます。
破棄ジョブの実行後、ジョブを取得してそのステータスを確認します。オプションで、Terraform状態ファイルを表示したり、ログを表示したり、リソースの削除を確認できます。破棄されたリソースを再作成することもできます。
ジョブの詳細を取得して、ジョブ・ステータス(ライフサイクル状態)をモニターします。成功(
SUCCEEDED
)は、ジョブが完了したことを示します。ジョブの複雑さによっては、操作に時間がかかる場合があります。ジョブの実行中または終了後に、ジョブ・ログの内容を取得できます。Terraformの状態ファイル(ジョブの実行後にリソースの状態を示します)を表示するには、「ジョブ詳細」ページを表示するジョブの名前を選択し、「リソース」の下の「状態の表示」を選択します。オプションで、「このバージョンの変更の表示」を選択します。
ジョブのログを表示するには、ジョブを選択してその詳細ページを開き、「リソース」の下の「ログ」を選択します。
リソースの削除を確認するには、コンパートメントのリソースを検査します。
リソースが破棄された後にスタックのリソースを再作成するには、適用ジョブを実行します。新しいリソースは、一意のOCIDsおよびその他のメタデータによって、以前に破棄されたリソースとは異なります。
破棄ジョブを実行するには(CLI)oci resource-manager job create-destroy-job
コマンドおよび必須パラメータを使用して、破棄ジョブを実行します。oci resource-manager job create-destroy-job [OPTIONS]
CLIコマンドのパラメータおよび値の完全なリストは、リソース・マネージャ・コマンドライン・リファレンスを参照してください。
破棄ジョブの実行後、ジョブを取得してそのステータスを確認します。
ジョブの詳細を取得して、ジョブ・ステータス(ライフサイクル状態)をモニターします。成功(
SUCCEEDED
)は、ジョブが完了したことを示します。ジョブの複雑さによっては、操作に時間がかかる場合があります。ジョブの実行中または終了後に、ジョブ・ログの内容を取得できます。オプションで、Terraform状態ファイルを表示し、ログを表示して、リソースの削除を確認できます。破棄されたリソースを再作成することもできます。
リソースの削除を確認するには、コンパートメントのリソースを検査します。
リソースが破棄された後にスタックのリソースを再作成するには、適用ジョブを実行します。新しいリソースは、一意のOCIDsおよびその他のメタデータによって、以前に破棄されたリソースとは異なります。
-
タスク3: その他の環境での繰返し
この項では、複数の環境でインフラストラクチャを構築およびデプロイする方法について説明します。
このシナリオでは、同じTerraform構成.zipファイルを使用して、開発、ステージングおよび本番環境にコンピュート・インスタンスをプロビジョニングします。
-
Terraform構成に定義されているインフラストラクチャをプロビジョニングする新しい環境のテナンシにアクセスします。
たとえば、ステージング環境または本番環境のテナンシにアクセスします。
- 「スタックの作成」ページを開きます:
- ナビゲーション・メニューを開き、「開発者サービス」を選択します。「リソース・マネージャ」で、「スタック」を選択します。
-
「リスト範囲」で、作業する権限があるコンパートメントを選択します。ページが更新されて、そのコンパートメントのリソースのみが表示されます。使用するコンパートメントが不明な場合は、管理者に問い合せてください。
- 「スタックの作成」を選択します。
-
最初の環境と同じTerraform構成を使用して、「スタック情報」タブに入力します:
-
「スタックの作成」ページで、「自分の構成」を選択します。
-
「スタック構成」で、「.Zipファイル」を選択し、Terraform構成を追加します。
Terraform構成の.zipファイルをコントロールにドラッグ・アンド・ドロップするか、「参照」を選択して.zipファイルの場所に移動できます。
- 新しいスタックの名前を入力します(または、表示されたデフォルトの名前を受け入れます)。機密情報を入力しないでください。
- 必要に応じて、「説明」を入力します。
-
「コンパートメントに作成」ドロップダウンから、スタックを作成するコンパートメントを選択します。
-
「次」を選択します。
「変数の構成」パネルに、選択したTerraform構成ファイルの変数が表示されます。
-
-
この環境の変数値を指定します。
-
「変数の構成」パネルで、変数を確認し、必要に応じて変更します。
デフォルト値は、スキーマ・ドキュメントで指定された場合に指定されます。
重要
秘密キーやその他の機密情報は、構成変数に追加しないでください。 - 「次」を選択します。
-
- 「確認」パネルで、スタック構成を確認します。
- スタックの作成時にリソースを自動的にプロビジョニングするには、「適用の実行」を選択します。
-
「作成」を選択してスタックを作成します。
新しいスタックの詳細ページが表示されます。
「適用の実行」を選択した場合、リソース・マネージャは新しいスタックで適用アクションを実行します。
Terraform構成を再利用して、新しい環境にスタックを作成しました。「適用の実行」を選択した場合は、新しい環境でリソースもプロビジョニングしました。
実行計画を生成してレビューできるようになりました(「適用の実行」が選択されていない場合は、リソースをプロビジョニングします)。これらの項目を完了するには、新しい環境でタスク2: インフラストラクチャのプロビジョニングのステップを繰り返します。