複数のリージョンのターゲット指定

単一のTerraform構成を使用して、複数のリージョンにOracle Cloud Infrastructure (OCI)リソースを作成します。

各リージョンのプロバイダの作成

Terraform構成には単一のOCI Terraformプロバイダ・ブロックのみを含めることができますが、複数のリージョンに構成を適用するには、複数のプロバイダ・ブロックを作成する必要があります。

一般的なOCI Terraformプロバイダ・ブロックは次のようになります:

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
}
ヒント

すべてのパラメータは変数を使用して設定する必要があります。

単一のTerraform構成内で複数のリージョンを使用する場合は、複数のプロバイダが必要です。各プロバイダに別名を指定する必要があります。例:

provider "oci" {
  alias            = "home"
  region           = var.region
  tenancy_ocid     = var.tenancy_ocid
  user_ocid        = var.user_ocid
  fingerprint      = var.fingerprint
  private_key_path = var.private_key_path
}

provider "oci" {
  alias            = "region2"
  region           = var.region2
  tenancy_ocid     = var.tenancy_ocid
  user_ocid        = var.user_ocid
  fingerprint      = var.fingerprint
  private_key_path = var.private_key_path
}

Oracle Cloud Infrastructureにサインアップすると、1つのリージョン(ホーム・リージョン)にテナンシが作成されます。ホーム・リージョンには特別なプロパティがあります。たとえば、IAMリソースはホーム・リージョンにのみ作成できます。そのため、homeなどの適切な別名でそのリージョンを指定する必要があります。ユーザーが必要なリージョンに構成を簡単にマップできるように、他のリージョンには単純な別名(region2など)を使用します。

ノート

特定のリージョン(us-phoenix-1、us-ashburn-1など)は、regionまたはaliasフィールドにハードコードされません。

リソースのプロビジョニング

リージョンにリソースをプロビジョニングするには、リソースに別名のプロバイダ名を指定します。

例:

resource "oci_core_instance" "test_instance" {
 provider = oci.home
 ...
}

モジュールと複数のリージョン

通常、モジュールは単一のリージョンのみを使用します。追加のリージョンが必要な場合は、別のモジュールを使用する必要があります。

構成に複数のプロバイダが含まれている場合、次のフォーマットを使用して、モジュールで使用するプロバイダを指定する必要があります:

module "compartments" {
  source       = "./compartments"
  providers = {
    oci = "oci.home"
  }
}