リソース・マネージャのTerraform構成
リソース・マネージャで使用するTerraform構成の要件と推奨事項を確認します。Terraformおよびリソース・マネージャを使用して、infrastructure-as-codeモデルを使用してリソースをインストール、構成および管理します。
Terraform構成の基本情報は、構成の作成を参照してください。スタックおよびジョブで構成を使用する手順は、スタックおよびジョブの管理を参照してください。
Resource ManagerでサポートされているTerraform構成ソースについては、Terraform構成の格納場所を参照してください。
独自のTerraform構成ファイルの作成に加えて、リソース検出を使用して既存のコンパートメントから、またはサンプル・テンプレートからTerraform構成を生成するオプションもあります。
Terraform構成にユーザー資格証明などの機密情報を指定しないでください。
要件
リソース・マネージャで使用されるTerraform構成ファイルは、次の要件を満たす必要があります。
Terraformプロバイダ
リソース・マネージャを使用する場合、provider "oci"
ブロック内のregion
フィールドが唯一の必須フィールドです。プロバイダの定義の詳細は、構成ファイルの要件を参照してください。
ファイル構造
リソース・マネージャでは、Terraform構成で次のファイル構造が必要です:
-
作業ディレクトリには、少なくとも1つの
.tf
ファイルが必要です。作業ディレクトリに.terraform
ディレクトリを含めることはできません。Terraformの実行元のパスへの作業ディレクトリ。デフォルトでは、作業ディレクトリは構成のルート・ディレクトリです(アップロードした構成の場合、
.zip
ファイルのルート)。APIを使用する場合、workingDirectory
パラメータを設定して、作業ディレクトリに別の場所を指定できます。 - この構成は、構成の作成で指定されたガイドラインに従っている必要があります。
- 構成内にTerraform状態ファイル(
.tfstate
)を格納できません。 - 構成をローカルにアップロードする場合は、すべてのファイルを
.zip
ファイルにバンドルします。
モジュール
Resource Managerでは、次のTerraformモジュール・ソースがサポートされています:
変数
Oracle Cloud Infrastructure Consoleでのユーザー入力を容易にするために、Terraform構成でスキーマ・ドキュメントを使用することをお薦めします。
リソース・マネージャには、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構成の例
次の例に、1つのファイルに含まれるTerraform構成を示します。この基本的な例では、1つのTerraformプロバイダ、1つのOracle Cloud Infrastructureリソースおよび一連の変数のみを定義します。
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 Provider Examplesの例を参照してください。
Terraform構成の格納場所
Resource Managerを使用したスタックの作成時に、次のソースからTerraform構成を選択できます。
- ローカル.zipファイル
- ローカル・フォルダ
- オブジェクト・ストレージ・バケット
バケットの最新の内容は、関連付けられたスタックで実行されているジョブによって自動的に使用されます。
- Gitなどのソース・コード制御システム
構成の最新バージョンは、関連付けられたスタックで実行されているすべてのジョブによって自動的に使用されます。
- テンプレート(Oracleまたはプライベート・テンプレートからの事前組込みTerraform構成)
- 既存のコンパートメント(リソース検出)
スキーマ・ドキュメント
リソース・マネージャを使用する場合は、Terraform構成にスキーマ・ドキュメントをお薦めします。スキーマ・ドキュメントを使用したコンソール・ページの拡張を参照してください。