- OpenTofu言語
- OpenTofu設定
- バックエンド
- remote
バックエンドタイプ: remote
このバックエンドの代わりに、cloud組み込み統合を使用することをお勧めします。cloudオプションには、より優れたユーザーエクスペリエンスとより多くの機能が含まれています。
リモートバックエンドは、状態スナップショットを保存し、TF Automation and Collaboration Software(TACOS)バックエンドのCLI駆動型ランワークフロー操作を実行できるため、他のすべてのOpenTofuバックエンドの中で独特です。以前は「拡張」バックエンドと呼ばれていました。
TACOSプロバイダーが完全なリモート操作を有効にしている場合は、ログ出力がローカルターミナルに直接ストリーミングされ、TACOSランタイム環境内でtofu planやtofu applyなどのコマンドを実行できます。リモートプランと適用では、関連付けられたリモートワークスペースの変数値が使用されます。
また、TACOSをローカル操作で使用することもできます。この場合、状態のみがTACOSリモートバックエンドに保存されます。
コマンドサポート
機能の実装は、異なるTACOS間で異なる場合があります。
リモートバックエンドは、次のOpenTofuコマンドをサポートしています。
applyconsoledestroyfmtgetgraphimportinitoutputplanprovidersshowstate(すべてのサブコマンドをサポート: list, mv, pull, push, rm, show)taintuntaintvalidateversionworkspace
ワークスペース
リモートバックエンドは、単一のリモートワークスペース、または複数の類似した名前のリモートワークスペース(networking-devやnetworking-prodなど)のいずれかで動作できます。バックエンド設定のworkspacesブロックは、どちらのモードを使用するかを決定します。
-
単一のリモートワークスペースを使用するには、
workspaces.nameをリモートワークスペースのフルネーム(networking-prodなど)に設定します。 -
複数のリモートワークスペースを使用するには、
workspaces.prefixを、目的のリモートワークスペース名すべてで使用されるプレフィックスに設定します。たとえば、prefix = "networking-"を設定すると、networking-devやnetworking-prodのような名前のリモートワークスペースを使用できます。これは、単一のOpenTofu設定で使用される複数のOpenTofu CLIワークスペースを複数のリモートワークスペースにマッピングする場合に役立ちます。
バックエンド設定には、nameまたはprefixのいずれかが必要です。両方を省略したり、両方を設定すると、構成エラーが発生します。
tofu initを実行したときに以前の状態が存在し、対応するリモートワークスペースが空であるか存在しない場合、OpenTofuはワークスペースを作成し、それに応じてリモート状態を更新します。ただし、ワークスペースでリモート操作に変数または特定のバージョンのOpenTofuが必要な場合は、リモート操作を実行する前にTACOSでリモートワークスペースを作成することをお勧めします。
ワークスペース名
OpenTofuは、コマンドラインでワークスペースを操作するために、共通プレフィックスのない短縮名を使用します。たとえば、prefix = "networking-"の場合、現在の構成内のOpenTofu CLIワークスペースprodに切り替えるには、tofu workspace select prodを使用します。ただし、そのOpenTofu CLIワークスペースに対するplanやapplyなどのリモートOpenTofu操作は、リモートワークスペースnetworking-prodで行われます。
このため、terraform.workspace補間式は、リモートワークスペースがローカルまたはリモートで操作を実行するように構成されているかどうかに応じて、異なる結果を生成します。たとえば、prefix = "networking-"で作成されたnetworking-prodというリモートワークスペースでは、式は次のようになります。
- ローカル操作の場合、
terraform.workspace=prod - リモート操作の場合、
terraform.workspace=networking-prod
設定例
設定からトークンを省略し、代わりにtofu loginを使用するか、CLI設定ファイルでcredentialsを手動で設定することをお勧めします。
基本設定
# Using a single workspace:
terraform {
backend "remote" {
hostname = "app.example.io"
organization = "company"
workspaces {
name = "my-app-prod"
}
}
}
# Using multiple workspaces:
terraform {
backend "remote" {
hostname = "app.example.io"
organization = "company"
workspaces {
prefix = "my-app-"
}
}
}
CLI入力の使用
# main.tf
terraform {
required_version = "~> 0.12.0"
backend "remote" {}
}
バックエンド設定ファイル
# config.remote.tfbackend
workspaces { name = "workspace" }
hostname = "app.example.io"
organization = "company"
バックエンドファイルを使用してtofu initを実行
tofu init -backend-config=config.remote.tfbackend
データソース設定
data "terraform_remote_state" "foo" {
backend = "remote"
config = {
organization = "company"
workspaces = {
name = "workspace"
}
}
}
設定変数
クレデンシャルやその他の機密データを提供するには、環境変数を使用することをお勧めします。-backend-configを使用したり、これらの値を設定に直接ハードコードしたりすると、OpenTofuはこれらの値を.terraformサブディレクトリとプランファイルの両方に含めます。詳細については、クレデンシャルと機密データを参照してください。
次の設定オプションがサポートされています。
-
hostname- (必須) 接続先のリモートバックエンドのホスト名。 -
organization- (必須) ターゲットワークスペースが含まれる組織の名前。 -
token- (オプション) リモートバックエンドとの認証に使用されるトークン。設定からトークンを省略し、代わりにtofu loginを使用するか、CLI設定ファイルでcredentialsを手動で設定することをお勧めします。 -
workspaces- (必須) 使用するリモートワークスペースを指定するブロック。workspacesブロックは次のキーをサポートします。name- (オプション) 1つのリモートワークスペースのフルネーム。設定すると、デフォルトワークスペースのみを使用できます。このオプションはprefixと競合します。prefix- (オプション) 1つ以上のリモートワークスペースの名前で使用されるプレフィックス。これらのすべてをこの設定で使用できます。フルワークスペース名はTACOSで使用され、短い名前(プレフィックスを除く)はOpenTofu CLIワークスペースのコマンドラインで使用されます。省略した場合、デフォルトワークスペースのみを使用できます。このオプションはnameと競合します。
別のリモートワークスペースから状態を取得するterraform_remote_stateデータソースを設定する場合は、nameキーを使用する必要があります。prefixキーは、リモートバックエンドのインスタンスを設定する場合にのみ使用することを目的としています。
コマンドライン引数
backend "remote"ブロックを含む設定では、OpenTofuの状態をローカルで変更してからリモートワークスペースにプッシュするコマンドは、その動作を変更するために次のオプションを受け入れます。
-
-ignore-remote-version- ローカルとリモートのOpenTofuのバージョンが一致するかどうかのチェックをオーバーライドし、不一致がある場合でも操作を続行します。通常、状態変更操作では、設定の一部としてリモートワークスペース用に選択されたOpenTofuバージョンと互換性のあるOpenTofu CLIのローカルバージョンを使用する必要があります。これは、ローカル操作がワークスペースのリモート実行環境がデコードできない新しい状態スナップショットを作成するのを防ぐためです。
このチェックをオーバーライドすると、リモートワークスペースがリモート操作を完了できなくなる可能性があるため、このオプションの使用はお勧めしません。
.terraformignoreを使用したアップロードからのファイル除外
CLI駆動の実行でリモートplanまたはapplyを実行する場合、設定ディレクトリのアーカイブがTACOSにアップロードされます。設定ディレクトリのルートにある.terraformignoreファイルを使用して、アップロードから無視するパスを定義できます。このファイルが存在しない場合、アーカイブはデフォルトで以下を除外します。
.git/ディレクトリ.terraform/ディレクトリ(.terraform/modulesを除く)
.terraformignoreファイルには、.gitignoreファイルに含めるのと同じルールを含めることができます。
- コメント (
#で始まる) または空白行は無視されます - ディレクトリを指定するには、パターンをスラッシュ
/で終了します - 感嘆符
!で始めることでパターンを否定します
.gitignoreとは異なり、設定ディレクトリのルートにある.terraformignoreのみが考慮されることに注意してください。