4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Terraform Cloudでtfvarsファイルを使う方法

Last updated at Posted at 2024-12-21

はじめに

どうも、@to-fmakです。最近Terraform Cloudでtfvarsファイルを使う必要があったので、その実現方法について簡単に共有したいと思います。

ディレクトリ構成

今回使うTerraformのディレクトリ構成が下記の通りです。

ルートディレクトリにtfファイルを配置し、そこからmodulesディレクトリ内のsampleモジュールを呼び出す構成です。変数定義はvariables.tfに記載し、値は環境ごとにenvディレクトリ内のtfvarsファイルに分けています。

.
├── env
│   ├── dev.tfvars
│   ├── prd.tfvars
│   └── stg.tfvars
├── main.tf
├── modules
│   └── sample
│       ├── main.tf
│       ├── outputs.tf
│       └── variables.tf
├── providers.tf
└── variables.tf

planやapplyを実行する際に、-var-file=のCLIオプションで、環境に応じたtfvarsファイルを指定します。

Terraform Cloud移行時の問題点

上記TerraformコードをTerraform Cloudに移行する必要がありました。

Terraform Cloudの設定として、以下を利用しました。

  • ワークスペース: GithubをVCSとして連携し、リモート実行モード(remote execution mode)を使用
  • トリガー: Terraform CloudのUIやGitHubのPR作成・マージをトリガーに、planやapplyを自動実行

ただし、この設定では-var-file=のようなCLIオプションが利用できず、別の方法でtfvarsファイルを指定する必要がありました。

ワークスペースの変数について

Terraform Cloudでは、各ワークスペースに環境固有の変数を直接追加することで、tfvarsファイルを指定せずにapplyを実行できます。この方法では、Terraform CloudのUIから変数を管理するか、tfeプロバイダーを使って変数をコードで管理することも可能です。

ただし、今回は既存のtfvarsファイルをそのまま利用したいため、ワークスペースに変数を直接追加する方法は採用しませんでした。

*.auto.tfvarsファイルについて

Terraformは、.auto.tfvarsファイルを自動で読み込む仕組みを提供しています。作業ディレクトリにこのファイルを作成すれば、planやapply実行時に自動的に適用されます。

注意点として

  • .auto.tfvarsファイルの変数はterraform.tfvarsより優先される
  • コマンドラインやHCP Terraformのワークスペース変数で指定された変数が最優先される

Variables in the .auto.tfvars files take precedence over variables in the terraform.tfvars file.

Variables in the HCP Terraform workspace and variables provided through the command line always overwrite variables with the same key from files ending in .auto.tfvars.

この方法は共通設定には便利ですが、環境ごとに異なる変数が必要な場合、既存のディレクトリ構成やファイル内容を変更する必要かと思います。

環境変数TF_CLI_ARGS_planの活用

Terraformでは、TF_CLI_ARGS_xxxという環境変数を使ってコマンドのデフォルトオプションを指定できます。これにより、コマンド実行時に毎回オプションを記述する必要がなくなります。

# CLIオプションを指定する場合
terraform plan -var-file=./env/dev.tfvars

# 環境変数を設定して実行する場合
export TF_CLI_ARGS_plan='-var-file=./env/dev.tfvars'
terraform plan

Terraform Cloudでこれを実現するには、対象ワークスペースに必要な環境変数を追加する必要があります。

また、Run typeを「Plan and apply」に設定すると、applyは直前のplan結果に基づいて実行されるため、TF_CLI_ARGS_applyの設定は不要です。

image.png

おわりに

Terraform Cloudで変数を設定する方法は複数あります。本記事では、既存のtfvarsファイルをそのまま適用する方法に焦点を当てて解説しました。実際にTerraform Cloudを活用する際は、プロジェクトの目的や要件に応じて最適な方法を選択し、効率的で柔軟な環境管理を実現していただければと思います。

参考URL

エンジニア募集

Gakken LEAP では教育をアップデートしていきたいエンジニアを絶賛大募集しています!!
ぜひお気軽にカジュアル面談へお越しください!!

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?