リソース・マネージャのTerraform構成

リソース・マネージャで使用されるTerraform構成の要件および推奨事項を確認します。Terraformおよびリソース・マネージャを使用して、infrastructure-as-codeモデルを使用してリソースをインストール、構成および管理します。

Terraform構成の基本情報は、構成のオーサリングを参照してください。スタックおよびジョブで構成を使用する手順は、スタックおよびジョブの管理を参照してください。

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

独自のTerraform構成ファイルを作成する以外に、リソース検出またはサンプル・テンプレートを使用して既存のコンパートメントからTerraform構成を生成するオプションもあります。

注意

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

要件

リソース・マネージャで使用されるTerraform構成ファイルは、次の要件を満たす必要があります。

Terraformプロバイダ

リソース・マネージャを使用する場合、provider "oci"ブロック内のregionフィールドが唯一の必須フィールドです。プロバイダの定義の詳細は、構成ファイルの要件を参照してください。

ファイル構造

リソース・マネージャでは、Terraform構成で次のファイル構造が必要です:

  • 作業ディレクトリには、少なくとも1つの.tfファイルが必要です。作業ディレクトリに.terraformディレクトリを含めることはできません。

    Terraformの実行元のパスへの作業ディレクトリ。デフォルトでは、作業ディレクトリは構成のルート・ディレクトリです(アップロードした構成の場合、.zipファイルのルート)。APIを使用する場合、workingDirectoryパラメータを設定して、作業ディレクトリに別の場所を指定できます。

  • 構成は、Authoring Configurationsで指定されているガイドラインに従う必要があります。
  • 構成内にTerraform状態ファイル(.tfstate)を格納できません。
  • 構成をローカルにアップロードする場合は、すべてのファイルを.zipファイルにバンドルします。

変数

スキーマ・ドキュメントをTerraform構成とともに使用して、Oracle Cloud Infrastructureコンソールでのユーザー・エントリを容易にすることをお薦めします。

リソース・マネージャには、Terraform構成の変数に対する要件がありません。リソース・マネージャは、変数を処理するためのネイティブTerraform動作をサポートします。Terraformは、サポートされているタイプ制約を使用する変数定義の変数を設定します。ジョブを実行すると、スタックの変数値が環境変数としてリソース・マネージャTerraformホストに追加されます。たとえば、特定のVCN変数のスタックで指定されたVCNが環境変数として追加されます。

ノート

Terraform構成で定義されている場合、次の変数によって、スタックの作成および編集に使用されるコンソール・ページに値が自動的に事前移入されます。スタックの値は、Terraformアクションの「プラン」「適用」および「破棄」を選択した場合に使用されます。

  • tenancy_ocid (テナンシOCID)
  • compartment_ocid (コンパートメントOCID)
  • region (リージョン)
  • current_user_ocid (現在のユーザーのOCID)

サードパーティ・プロバイダ構成

リソース・マネージャで使用されるTerraform構成でサードパーティTerraformプロバイダを参照します。

デフォルトでは、新しいリソース・マネージャ・スタックはTerraformレジストリからサードパーティ・プロバイダをフェッチします。(更新されないかぎり、特定の古いスタックはリソース・マネージャからフェッチされます)。カスタム・プロバイダは、新規および更新されたスタックにも使用できます。

プロバイダ構成と同様に、バージョンを指定することをお薦めします。依存関係ロックファイルは、新規および更新されたスタックに対して自動的に管理されます。プロバイダは、Terraform構成のバージョン制約内で更新されます。手順については、「最新のプロバイダの取得」を参照してください。

Terraform構成へのプロバイダの追加の詳細は、プロバイダ構成を参照してください。

リソース・マネージャのTerraform構成の例

次の例は、単一のファイルに含まれるTerraform構成を示しています。この基本サンプルでは、1つのTerraformプロバイダ、1つのOracle Cloud Infrastructureリソースおよび1つの変数セットのみを定義します。



variable "compartment_ocid" {}
variable "region" {}

provider "oci" {
  region = "${var.region}"
}

resource "oci_core_virtual_network" "vcn1" {
  cidr_block = "10.0.0.0/16"
  dns_label = "vcn1"
  compartment_id = "${var.compartment_ocid}"
  display_name = "vcn1"
}

Terraform構成は多くの場合、バンドルされた複数のファイルで構成されます(アップロードした構成の場合、ファイルは.zipファイルにバンドルされます)。複数のファイルを含むより複雑なTerraform構成を確認するには、Terraform Oracle Cloud Infrastructureプロバイダの例の例を参照してください。

ヒント

OCI Terraform構成の例を使用してスタックをすばやく作成します。Terraform Oracle Cloud Infrastructureプロバイダの例に移動し、必要な構成のフォルダ(admなど)に移動し、readmeの「マジック・ボタン」の下の「Oracle Cloudにデプロイ」ボタンをクリックします。

Terraform構成の格納場所

リソース・マネージャを使用したスタックの作成時に、次のソースからTerraform構成を選択できます。

  • ローカル.zipファイル
  • ローカルフォルダ
  • オブジェクト・ストレージ・バケット

    バケットの最新の内容は、関連付けられたスタックで実行されているジョブによって自動的に使用されます。

  • Gitなどのソース・コード制御システム

    構成の最新バージョンは、関連付けられているスタックで実行されているジョブによって自動的に使用されます。

  • テンプレート(Oracleまたはプライベート・テンプレートからの事前ビルド済Terraform構成)
  • 既存のコンパートメント(リソース検出)