1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Terraform 変数の値をplan/applyの実行時に指定する方法

Posted at

Terraformで変数を定義する場合、一般的には下記のように変数の値も一緒に定義する。

variables.tf
variable "instance_type" {
  type    = string
  default = "t2.micro"
}

一方で、何らかの事情で値を定義せず、外部から指定するようにして柔軟性を持たせたい場合もある。
本記事てはその方法を紹介する。

前提: 変数は定義して、値をブランクにしておく

variables.tf
variable instance_type {}

下記に紹介する方法で変数の値(中身)を指定できるが、変数定義自体は必要なのでこのように定義しておく。

方法1: CLIで対話形式で入力する

plan/applyを打つと下記のように対話形式で入力することが可能。

terraform plan 
var.instance_type
  Enter a value:(ここに入力)

方法2: -varフラグで指定する

plan/apply実行時に-var "変数名=値"と指定する。

terraform plan -var "instance_type=t2.micro"

変数を複数指定したい場合は-var "変数名=値"の定義を増やす。

terraform plan -var "instance_type=t2.micro" -var "instance_count=2"

方法3: 環境変数を利用する

環境変数にTF_VAR_というprefixをつけて定義すると、plan/apply時に読み込まれる。

export TF_VAR_instance_type="t2.micro"
terraform plan

方法4: ファイルに定義する

.tfvarsという拡張子のファイルを用意し、そこに値を定義する。
実務ではよく使われる方法だと思う。

terraform.tfvars
instance_type="t2.micro"

ファイル名は下記の4種類であれば自動的に読み込まれる。

  • terraform.tfvars
  • terraform.tfvars.json
  • *.auto.tfvars
  • *.auto.tfvars.json

上記以外のファイル名で定義したい場合、-var-fileフラグで指定する。

値の読み込み順序 = 優先順位

ここまで紹介した値の定義方法には読み込み順序(適用順序)があり、後から読み込まれたものが採用される。

  1. 環境変数(= 優先順位が一番低い)
  2. terraform.tfvars
  3. terraform.tfvars.json
    4.  *.auto.tfvars, *.auto.tfvars.json
  4. -var, -var-file フラグで実行時に与えられたもの(= 優先順位が一番高い)

ちなみに、変数定義時に設定した値は最も優先順位が低く、環境変数の方が優先される。

参考

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?