6
2

More than 1 year has passed since last update.

【Terraform】Terraformで外部から変数を与える方法

Posted at

はじめに

udemyを使ってTerraformの勉強をしたので、Terraformで外部から変数を与える方法についての学習備忘録です。

外部から変数を与える方法は3種類

  • 外部から変数値を与える方法は3種類あります
  • 3種類の方法で同じ変数を並行して指定することも可能です
    • 環境変数 < 変数ファイル < コマンド引数の順で上書きします
    • 同じ方法で変数の定義が重複した場合は原則として後に定義した変数が優先されます

環境変数

環境変数へあらかじめ設定してある値を利用します

TF_VAR_Name

変数ファイル

あらかじめ決められた変数ファイル名のファイルに指定します

terraform.tfvars

コマンド引数

以下のコマンド引数で指定された値を利用します

-var NAME】=【NAME
-var-fileFILE_PATH

環境変数を使った上書き

main.tf
variable "name" {
  type    = string
  default = "nothing"
}

TF_VAR_で上書きできます
環境変数定義、プラン実行

$ export TF_VAR_name="hello" 
$ terraform plan

# 実行結果
> tags = {
    + "Name" = "hello"

変数ファイル(terraform.tfvars)で上書き

変数ファイルの拡張子は.tfvars

terraform.tfvars
name = "hoge"
main.tf
variable "name" {
  type    = string
  default = "nothing"
}

プラン実行

$ terraform plan

# 実行結果
> tags = {
    + "Name" = "hoge"

コマンドを使った上書き

main.tf
variable "name" {
  type    = string
  default = "nothing"
}

プラン実行

$ terraform plan -var name="command" 

# 実行結果
> tags = {
    + "Name" = "command"

変数の上書きの使い分け

環境変数

実行ログに残らない

  • 鍵情報など(ファイルとして残したくない情報)
  • 環境依存情報(dev stg prd)など
  • 運用管理サーバーで作業するような厳格な場合

変数ファイル

基本的にはこちらの方法がおすすめ(変数は別ファイルで外だし)

  • git管理できる=構成管理として残せる
  • ロジックとデータ(変数)を切り離すことで変更箇所が分かりやすくなる

コマンド引数

実行ログに残る

  • テストで部分的に変更したい
  • デバッグで一部変更したい
  • など、一時的な利用

以上。本日は、Terraformで外部から変数を与える方法についてをまとめてみました。

6
2
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
6
2