はじめに

このサンプルでは、リソース・マネージャを使用してOracle Cloud Infrastructureコンピュート・インスタンスを作成およびデプロイするために必要なタスクのエンドツーエンドの手順を提供します。

このページでは、リソース・マネージャの使用を開始できます。事前構築済のTerraform構成または独自のTerraform構成のいずれかを使用してOracle Cloud Infrastructureコンピュート・インスタンスを作成およびデプロイするには、このエンドツーエンドのタスクを使用します。リソース・マネージャの概要については、リソース・マネージャの概要を参照してください。

ハイライト

このウォークスルーでは、コンピュート・インスタンスを作成するための事前構築済のTerraform構成を提供するだけでなく、Terraform構成の記述方法を示すサンプルが提供されます。使用する構成(事前作成済または独自の構成)にかかわらず、リソース・マネージャはTerraformを使用して定義されたリソースをプロビジョニングします。リソースは、ジョブを使用して作成およびプロビジョニングされるスタックに編成されます。

この手順では、次のタスクについて説明します:

  • Terraform構成を選択または作成します。
  • インフラストラクチャをプロビジョニングします:
    • インフラストラクチャをプロビジョニングするスタックを作成します。
    • スタックに対する計画ジョブを実行して、構成を解析し、実行計画を作成します。
    • 生成された実行計画を確認します。
    • スタックに対する適用ジョブを実行して、リソースをプロビジョニングします。適用ジョブは、Terraformの構成に基づく実行計画に従います。
    • 結果のインフラストラクチャを確認します。
  • オプションで、同じTerraform構成を使用して、インフラストラクチャをさらに環境にプロビジョニングします。

始める前に

前提条件をインストール、取得または作成したことを確認してください:

  • リソースをプロビジョニングする環境ごとのOracle Cloud Infrastructureテナンシ。たとえば、Terraform構成で定義されているリソースを、開発、ステージングおよび本番環境にプロビジョニングできます。
    ノート

    各環境を独自のテナンシに配置することがベスト・プラクティスです。
  • スタックを作成するコンパートメントのOCID 
  • 次を含むユーザー・アカウント:
  • Oracle Cloud Infrastructure CLIを使用する場合は、最初にCLIをインストールして構成します。クイックスタートおよびCLIの構成を参照してください

タスク1a: 事前作成済のTerraform構成の選択

独自の構成を記述するかわりに、あらかじめ作成されたTerraform構成でコンピュート・インスタンス・テンプレートを選択できます。これらのステップでは、スタック作成プロセスを順を追って説明します。

  1. 次のリンクをクリックして、コンピュート・インスタンス・テンプレートがすでに選択されている「スタックの作成」ページを起動します。

    コンピュート・インスタンス・テンプレートを使用したスタックの起動

  2. 「スタックの作成」ページで、新しいスタックに名前を入力します(または、表示されたデフォルトの名前を受け入れます)。機密情報の入力は避けてください。
  3. 「コンパートメントに作成」ドロップダウンから、スタックを作成するコンパートメントを選択します。

    リスト範囲のコンパートメントはデフォルトで設定されています。

  4. 「次へ」をクリックします。

    「変数の構成」パネルには、Terraform構成の変数が表示されます。

  5. 変数を確認し、必要に応じて変更します。

    重要

    秘密キーやその他の機密情報は、構成変数に追加しないでください。
  6. 「次へ」をクリックします。
  7. 「確認」パネルで、スタック構成を確認します。

    このウォークスルーでは、「適用の実行」を空白のままにします。(スタックの作成時にインフラストラクチャを自動的にプロビジョニングするには、このオプションを使用します。)

  8. 「作成」をクリックしてスタックを作成します。

    新しいスタックの詳細ページが表示されます。

    完了しました。コンピュート・インスタンス・テンプレートから、事前構築済のTerraform構成を使用してスタックを作成しました。次のステップは、インフラストラクチャをプロビジョニングすることです。

タスク1b: 独自のTerraform構成の作成

事前構築済のTerraform構成を選択しなかった場合は、次のステップに従って独自の構成を記述します。

Terraform構成は、インフラストラクチャを調整するファイルです。この構成により、Terraformプロバイダ、プロビジョニングしようとしているリソース、変数、およびリソースのプロビジョニングに関する特定の指示が定義されます。

このページでは、コンピュート・インスタンス・テンプレートとその事前ビルド済Terraform構成の選択または.zipファイル内の複数の.tfファイルを使用した独自の構成の記述を順に実行できます。

リソース・マネージャで使用する構成の記述の詳細は、リソース・マネージャのTerraform構成およびTerraform構成を参照してください。

注意

Terraform構成でユーザー資格証明やその他の機密情報を指定しないでください。
Oracle Cloud Infrastructure Providerの作成

次のコード・サンプルでは、基本的なOracle Cloud Infrastructure Terraformプロバイダを作成します。値は、変数ファイルまたはプロバイダ定義(.tf)ファイルのいずれかで定義されている変数として指定できます。詳細は、プロバイダ構成を参照してください。

provider "oci" {
  region = "${var.region}"
}
変数の定義

リソースのプロビジョニング時に使用する変数を定義します。アップロードする構成パッケージに「変数」ファイルを作成することをお薦めします。次に、variables.tfという名前の構成ファイルの例を示します。変数の使用の詳細は、入力変数を参照してください。入力変数の構成も参照してください。


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>"
}

前述の例で宣言された変数の詳細は、次を参照してください:

スキーマ・ドキュメントの定義(オプション)

スキーマ・ドキュメントを使用すると、開発、ステージングおよび本番環境で編集されていないTerraform構成を再利用できます。スキーマ・ドキュメントを含むTerraform構成でスタックを作成すると、リソース・マネージャから変数値の入力を求められます。

リソース・マネージャを使用する場合、Terraform構成にはスキーマ・ドキュメントをお薦めします。スキーマ・ドキュメントを含めると、Oracle Cloud Infrastructureコンソールでページを拡張できます。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
仮想クラウド・ネットワーク(VCN)の作成

次のコード・サンプルでは、「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でのサブネットの作成

次のコード例では、前のコード例に定義した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またはコンソールを使用してスタックを作成するときに、そのファイルを選択できます。

重要

Terraform構成ファイルが有効であることを確認してください。構成のオーサリングおよびリソース・マネージャのTerraform構成を参照してください。

タスク2: インフラストラクチャのプロビジョニング

Terraform構成を使用して、次のアクションを実行してインフラストラクチャを構築およびデプロイします:

  1. 独自のTerraform構成を作成した場合は、次のステップに従って、選択したテナンシ・コンパートメントにスタックを作成します。(事前作成済の構成を選択した場合は、このステップをスキップします。)

    リソース・マネージャでサポートされているTerraform構成ソースについては、Terraform構成の格納場所を参照してください。

    スタックとは、グループとして操作できるリソースの集合です。構成内に指定したすべてのリソースは、作成したスタック内にプロビジョニングされます。

    スタックは、ソース・コード制御システム(Gitなど)、オブジェクト・ストレージ・バケットまたはアップロードするローカルでアクセスされる.zipファイル内に、バージョン管理されたリモート・ファイルから作成できます。ローカルファイルの手順を次に示します。

    .zipファイルからスタックを作成するには(コンソール)
    1. ナビゲーション・メニューを開き、「開発者サービス」をクリックします。「リソース・マネージャ」で、「スタック」をクリックします。
    2. 「リスト範囲」で、作業する権限があるコンパートメントを選択します。

    3. 「スタックの作成」をクリックします

      「スタックの作成」ページが開き、「スタック情報」タブが選択されています。

    4. 「スタックの作成」ページの「Terraform構成の起点の選択」で、「自分の構成」を選択します。

    5. 「スタック構成」で、をクリックします。Zipファイルし、Terraform構成を追加します。

      Terraform構成の.zipファイルをコントロールにドラッグ・アンド・ドロップするか、「参照」をクリックして.zipファイルの場所に移動します。

      構成をリモートに格納することもできます。たとえば、構成をGitまたはオブジェクト・ストレージ・バケットに格納します。

      Terraform構成に含まれる情報がページに移入されます。

    6. 残りのフィールドの値を入力します。
      名前 摘要
      カスタム・プロバイダの使用 カスタム・プロバイダを使用する場合はこのオプションを選択し、カスタム・プロバイダを含むバケットを選択します。
      名前 スタック名。指定されたデフォルト名を使用できます。機密情報の入力は避けてください。
      説明 スタックの説明(オプション)。
      コンパートメントに作成 スタックを作成するコンパートメント。リスト範囲のコンパートメントはデフォルトで設定されています。
      Terraformのバージョン Terraform構成に必要なバージョン。
      タグ オプションで、tagsをスタックに適用します。
    7. 「次へ」をクリックします。

      「変数の構成」パネルには、Terraform構成の変数がリストされます。

    8. 変数を確認し、必要に応じて変更します。

      構成変数に秘密キーやその他の機密情報を追加しないでください。
    9. 「次へ」をクリックします。

    10. 「確認」パネルで、スタック構成を確認します。

    11. スタックの作成時にリソースを自動的にプロビジョニングするには、「適用の実行」を選択します。

    12. 「作成」をクリックしてスタックを作成します。

      スタックが作成され、その「スタックの詳細」ページが開きます。

      「適用の実行」を選択した場合、リソース・マネージャは新しいスタックで適用アクションを実行します。

    .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"
        }
      }
    }
  2. 実行計画を生成します。

    計画ジョブは、構成を解析して「実行計画」を作成します。これは、ジョブのログ・エントリにおける計画済のデプロイメントを段階的に表したものです。計画ジョブが完了したら、ジョブのログ・エントリを表示して、想定された操作を実行していることを確認し、目的の順序で実行計画を評価できます。

    ノート

    スタックの作成時に「適用の実行」を選択した場合は、このステップをスキップできます。この場合、リソースはすでにプロビジョニングされています。
    計画ジョブを実行するには(コンソール)
    1. ナビゲーション・メニューを開き、「開発者サービス」をクリックします「リソース・マネージャ」で、「スタック」をクリックします。
    2. 「リスト範囲」で、作業する権限があるコンパートメントを選択します。

    3. 目的のスタックの名前をクリックします。

      「スタックの詳細」ページが開きます。

    4. 「計画」をクリックします

    5. 「プラン」パネルで、「名前」を確認し、オプションで変更します。

    6. 「計画」をクリックします

      プラン・ジョブが作成されます。新しいジョブが「ジョブ」の下にリストされます。

      ジョブの詳細を取得して、ジョブ・ステータス(ライフサイクル状態)をモニターします。成功(SUCCEEDED)は、ジョブが完了したことを示します。ジョブの複雑度によっては、操作に少し時間がかかる場合があります。ジョブの実行中または終了後に、ジョブ・ログの内容を取得できます。

    計画ジョブを実行するには(CLI)

    oci resource-manager job create-plan-jobコマンドおよび必須パラメータを使用して、計画ジョブを実行します。

    oci resource-manager job create-plan-job [OPTIONS]

    CLIコマンドのパラメータおよび値の完全なリストは、リソース・マネージャのコマンドライン・リファレンスを参照してください。

    ジョブの詳細を取得して、ジョブ・ステータス(ライフサイクル状態)をモニターします。成功(SUCCEEDED)は、ジョブが完了したことを示します。ジョブの複雑度によっては、操作に少し時間がかかる場合があります。ジョブの実行中または終了後に、ジョブ・ログの内容を取得できます。

  3. 実行計画を確認し、意図していることを確認します。

    実行計画は、以前に実行した計画ジョブのログに示されます。

    ノート

    スタックの作成時に「適用の実行」を選択した場合は、このステップをスキップできます。この場合、リソースはすでにプロビジョニングされています。
    実行計画(計画ジョブのログ)を確認するには(コンソール)
    1. ナビゲーション・メニューを開き、「開発者サービス」をクリックします。「リソース・マネージャ」で、「ジョブ」をクリックします。

      スタック詳細ページからジョブにアクセスすることもできます。「スタック」をクリックして、目的のスタックの名前をクリックします。

    2. 「リスト範囲」で、作業する権限があるコンパートメントを選択します。

    3. 実行した計画ジョブの名前をクリックします。

      「ジョブの詳細」ページが表示されます。ログが表示されます(「リソース」「ログ」セクション)。

      計画ジョブの場合、ログ・ファイルは実行計画です。計画ジョブのログ・ファイルを表示し、ログ・ファイルの一連のログ・エントリで「メッセージ」フィールドをメモします。これらの値は、構成で指定されている一連の操作を表します。

    4. (オプション)「ログのダウンロード」をクリックします(「リソース」「ログ」セクションの)。

    変更が必要な場合は、スタックを更新して修正済の構成を使用し、別の計画ジョブを実行して更新済の実行計画を取得します。

    実行計画(計画ジョブのログ)を確認するには(CLI)

    oci resource-manager job get-job-logsコマンドおよび必須パラメータを使用して、ジョブのログをエントリのページング・リストとして取得します。

    oci resource-manager job get-job-logs [OPTIONS]

    CLIコマンドのパラメータおよび値の完全なリストは、リソース・マネージャのコマンドライン・リファレンスを参照してください。

    プラン・ジョブのレスポンスの例

    このコマンドでは、ログ・エントリを記述するJSONオブジェクトが返されます。各オブジェクトには、実行計画の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"
                    },
                    ...
                  

    変更が必要な場合は、スタックを更新して修正済の構成を使用し、別の計画ジョブを実行して更新済の実行計画を取得します。

  4. 実行計画に対して適用ジョブを実行して、リソースをプロビジョニングします。

    実行計画が完了すると、定義したリソースをスタックにプロビジョニングする作業を実行できます。適用ジョブは実行計画を取得し、それをスタックに「適用」します。結果は、完全にプロビジョニングされたスタックです。

    ノート

    スタックの作成時に「適用の実行」を選択した場合は、このステップをスキップできます。この場合、リソースはすでにプロビジョニングされています。
    適用ジョブを実行するには(コンソール)
    1. ナビゲーション・メニューを開き、「開発者サービス」をクリックします。「リソース・マネージャ」で、「スタック」をクリックします。

    2. 「リスト範囲」で、作業する権限があるコンパートメントを選択します。

    3. 作成したスタックの名前をクリックします。

      「スタックの詳細」ページが開きます。

    4. 「適用」をクリックします

    5. (オプション)「適用」パネルで、適用ジョブの名前およびその他の設定を確認し、必要に応じて更新します。

    6. 「適用」をクリックします

      適用ジョブが作成されます。新しいジョブが「ジョブ」の下にリストされます。

      ジョブの詳細を取得して、ジョブ・ステータス(ライフサイクル状態)をモニターします。成功(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)は、ジョブが完了したことを示します。ジョブの複雑度によっては、操作に少し時間がかかる場合があります。ジョブの実行中または終了後に、ジョブ・ログの内容を取得できます。

    新規にプロビジョニングされたリソースの存在を確認するには、コンパートメントでリソースを検査します。

  5. 実行した適用ジョブのログ・エントリと状態ファイルを確認します。
    • ジョブの詳細は、ジョブ・ログのエントリを参照してください。

      ジョブ・ログを表示するには(コンソール)
      1. ナビゲーション・メニューを開き、「開発者サービス」をクリックします。「リソース・マネージャ」で、「ジョブ」をクリックします。

        スタック詳細ページからジョブにアクセスすることもできます。「スタック」をクリックして、目的のスタックの名前をクリックします。

      2. 「リスト範囲」で、作業する権限があるコンパートメントを選択します。

      3. 実行した適用ジョブの名前をクリックします。

        「ジョブの詳細」ページが表示されます。ログが表示されます(「リソース」「ログ」セクション)。

      4. (オプション)「ログのダウンロード」をクリックします(「リソース」「ログ」セクションの)。

      ジョブ・ログを表示するには(CLI)

      ログ・ファイルを表示して、ログ・ファイルの一連のログ・エントリで「メッセージ」フィールドをメモします。指定したジョブのログ・ファイルをエントリのページ付けされたリストまたは生の形式で表示できます。

      エントリのページ・リストを表示するには

      oci resource-manager job get-job-logsコマンドおよび必須パラメータを使用して、ジョブのログをエントリのページング・リストとして取得します。

      oci resource-manager job get-job-logs [OPTIONS]

      CLIコマンドのパラメータおよび値の完全なリストは、リソース・マネージャのコマンドライン・リファレンスを参照してください。

      プラン・ジョブのレスポンスの例

      このコマンドでは、ログ・エントリを記述するJSONオブジェクトが返されます。各オブジェクトには、実行計画の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つのジョブのみを実行できるようにすることで状態のロックをサポートします。状態ファイルの詳細は、Hashicorp: 状態を参照してください。

      ジョブの状態を表示するには(コンソール)
      1. ナビゲーション・メニューを開き、「開発者サービス」をクリックします。「リソース・マネージャ」で、「ジョブ」をクリックします。

        スタック詳細ページからジョブにアクセスすることもできます。「スタック」をクリックして、目的のスタックの名前をクリックします。

      2. 「リスト範囲」で、作業する権限があるコンパートメントを選択します。

      3. ジョブの名前をクリックします。

        「ジョブの詳細」ページが表示されます。

      4. 「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によってすでに管理されているリソースの状態ファイルをインポートすることもできます。
  6. プロビジョニングされたリソースを解放する必要があるときには、スタック上で破棄ジョブを実行します。

    破棄ジョブは、作成したスタックを分解してから、関連付けられたリソースを削除せずにクリーンアップします。たとえば、破棄ジョブはスタックに関連付けられたコンピュート・インスタンスを終了します。

    ノート

    最初に関連リソースを解放するためにスタックを削除する前に、破棄ジョブを実行することをお薦めします。スタックを削除すると、関連する状態ファイルも削除されるため、関連するリソースの状態のトラッキングが失われます。削除されたスタックに関連付けられているリソースのクリーンアップは、特にそれらのリソースが複数のコンパートメントにまたがる場合、状態ファイルなしでは困難になる可能性があります。後で困難なクリーンアップを回避するために、破棄ジョブを実行して関連付けられたリソースを最初に解放することをお薦めします。

    破棄されたリソースからデータを回復することはできません。

    破棄ジョブを実行するには(コンソール)
    1. ナビゲーション・メニューを開き、「開発者サービス」をクリックします。「リソース・マネージャ」で、「スタック」をクリックします。

    2. 「リスト範囲」で、作業する権限があるコンパートメントを選択します。

    3. 目的のスタックの名前をクリックします。

      「スタックの詳細」ページが開きます。

    4. 「破棄」をクリックします。
    5. (オプション)「破棄」パネルで、適用ジョブの名前およびその他の設定を確認し、必要に応じて更新します。

    6. 「破棄」をクリックします。

      破棄ジョブが作成されます。新しいジョブが「ジョブ」の下にリストされます。

      破棄ジョブの実行後、ジョブを取得してステータスを確認します。オプションで、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構成にスキーマ・ドキュメントが含まれていることを前提としています。このドキュメントでは、コンソールでスタックを作成するときに変数値を変更できます。
  1. Terraform構成で定義されたインフラストラクチャをプロビジョニングする新しい環境のテナンシにアクセスします。

    たとえば、ステージング環境または本番環境のテナンシにアクセスします。

  2. 「スタックの作成」ページを開きます:
    1. ナビゲーション・メニューを開き、「開発者サービス」をクリックします。「リソース・マネージャ」で、「スタック」をクリックします。
    2. 「リスト範囲」で、作業する権限があるコンパートメントを選択します。ページが更新されて、そのコンパートメントのリソースのみが表示されます。使用するコンパートメントが不明な場合は、管理者に問い合せてください。

    3. 「スタックの作成」をクリックします
  3. 最初の環境と同じTerraform構成を使用して、「スタック情報」タブに入力します:

    1. 「スタックの作成」ページで、「自分の構成」を選択します。

    2. 「スタック構成」で、をクリックします。Zipファイルし、Terraform構成を追加します。

      Terraform構成の.zipファイルをコントロールにドラッグ・アンド・ドロップするか、「参照」をクリックして.zipファイルの場所に移動します。

    3. 新しいスタックに名前を入力します(または、表示されたデフォルトの名前を受け入れます)。機密情報の入力は避けてください。
    4. 必要に応じて、説明を入力します
    5. 「コンパートメントに作成」ドロップダウンから、スタックを作成するコンパートメントを選択します。

    6. 「次へ」をクリックします。

      「変数の構成」パネルに、選択したTerraform構成の変数が表示されます。

  4. この環境の変数値を指定します。

    1. 「変数の構成」パネルで、変数を確認し、必要に応じて変更します。

      デフォルト値は、スキーマ・ドキュメントで指定されている場合に提供されます。

      重要

      秘密キーやその他の機密情報は、構成変数に追加しないでください。
    2. 「次へ」をクリックします。
  5. 「確認」パネルで、スタック構成を確認します。
  6. スタックの作成時にリソースを自動的にプロビジョニングするには、「適用の実行」を選択します。

  7. 「作成」をクリックしてスタックを作成します。

    新しいスタックの詳細ページが表示されます。

    「適用の実行」を選択した場合、リソース・マネージャは新しいスタックで適用アクションを実行します。

おめでとうございます。Terraform構成を再利用して、新しい環境にスタックを作成しました。「適用の実行」を選択した場合は、新しい環境でリソースもプロビジョニングされます。

実行計画を生成してレビューできるようになりました(および「適用の実行」が選択されていない場合はリソースをプロビジョニングします)。これらの項目を完了するには、新しい環境でタスク2: インフラストラクチャのプロビジョニングのステップを繰り返します。