メインコンテンツにスキップ

OpenTofu 設定

特別な `terraform` 設定ブロックタイプは、設定を適用するために必要な OpenTofu の最小バージョンなど、OpenTofu 自体の動作を設定するために使用されます。

OpenTofu `terraform` ブロック構文

OpenTofu の設定は `terraform` ブロックにまとめられます。

コードブロック
terraform {
# ...
}

各 `terraform` ブロックには、OpenTofu の動作に関連する多くの設定を含めることができます。 `terraform` ブロック内では、定数値のみを使用できます。引数は、リソース、入力変数などの名前付きオブジェクトを参照できず、OpenTofu 言語の組み込み関数を使用することもできません。

`terraform` ブロック内でサポートされているさまざまなオプションについては、以下のセクションで説明します。

OpenTofu バックエンドの設定

ネストされた `backend` ブロックは、OpenTofu が使用する状態バックエンドを設定します。

`backend` ブロックの構文と動作については、バックエンドの設定で説明されています。

必要な OpenTofu バージョンの指定

`required_version` 設定は、バージョン制約文字列を受け入れます。これは、設定で使用できる OpenTofu のバージョンを指定します。

実行中の OpenTofu のバージョンが指定された制約と一致しない場合、OpenTofu はエラーを生成し、それ以上の操作を行わずに終了します。

子モジュールを使用する場合、各モジュールは独自のバージョン要件を指定できます。ツリー内のすべてのモジュールの要件を満たす必要があります。

共同作業環境では、OpenTofu のバージョン制約を使用して、全員が特定の OpenTofu バージョンを使用していること、または少なくとも設定で想定されている動作を持つ最小限の OpenTofu バージョンを使用していることを確認します。

`required_version` 設定は、OpenTofu CLI のバージョンにのみ適用されます。 OpenTofu のリソースタイプはプロバイダープラグインによって実装されており、そのリリースサイクルは OpenTofu CLI および互いに独立しています。 使用する各プロバイダーの想定バージョンを管理するには、`required_providers` ブロックを使用します。

プロバイダー要件の指定

`required_providers` ブロックは、現在のモジュールに必要なすべてのプロバイダーを指定し、各ローカルプロバイダー名をソースアドレスとバージョン制約にマッピングします。

コードブロック
terraform {
required_providers {
aws = {
version = ">= 2.7.0"
source = "hashicorp/aws"
}
}
}

詳細については、プロバイダー要件を参照してください。

実験的な言語機能

OpenTofu チームは、新しい言語機能をオプトイン実験を通じて最初に導入することがあります。これにより、コミュニティは新しい機能を試して、後方互換性の制約になる前にフィードバックを提供できます。

実験的機能が利用可能なリリースでは、 `tofu` ブロック内に `experiments` 引数を設定することで、モジュールごとに有効にすることができます。

コードブロック
terraform {
experiments = [example]
}

上記は、現在の OpenTofu バージョンで `example` という名前の実験が利用可能であると仮定して、その実験にオプトインします。

実験は、後のリリースで任意に変更される可能性があり、実験の結果によっては、最終リリース前に大幅に変更されるか、安定版としてリリースされない場合があります。このような破壊的な変更は、マイナーリリースやパッチリリースでも発生する可能性があります。本番環境で使用することを目的とした OpenTofu モジュールでは、実験的機能を使用することはお勧めしません.

モジュール呼び出し側が誤って実験的機能に依存することを回避するために、実験が有効になっているモジュールは、 `tofu plan` または `tofu apply` ごとに警告を生成します.共有モジュールで実験的機能を試す場合は、モジュールのアルファ版またはベータ版でのみ実験を有効にすることをお勧めします.

実験の導入と完了は、OpenTofu の変更ログで報告されているため、リリースノートを参照して、特定の OpenTofu リリースでどの実験キーワードが利用可能かを確認できます。

プロバイダーへのメタデータの受け渡し

プロバイダーがスキーマを定義している場合、 `terraform` ブロックには、モジュールが使用しているプロバイダーごとにネストされた `provider_meta` ブロックを含めることができます。これにより、プロバイダーはモジュール固有の情報を受信できます。これは主に、関連するプロバイダーと同じベンダーによって配布されるモジュールを対象としています。

詳細については、プロバイダーメタデータを参照してください。