はじめに
udemyを使ってTerraformの勉強をしたので、Terraformで外部から変数を与える方法についての学習備忘録です。
外部から変数を与える方法は3種類
- 外部から変数値を与える方法は3種類あります
- 3種類の方法で同じ変数を並行して指定することも可能です
- 環境変数 < 変数ファイル < コマンド引数の順で
上書き
します - 同じ方法で変数の定義が重複した場合は原則として
後に定義した変数が優先
されます
- 環境変数 < 変数ファイル < コマンド引数の順で
環境変数
環境変数へあらかじめ設定してある値を利用します
TF_VAR_【Name】
変数ファイル
あらかじめ決められた変数ファイル名のファイルに指定します
terraform.tfvars
コマンド引数
以下のコマンド引数で指定された値を利用します
-var 【NAME】=【NAME】
-var-file【FILE_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で外部から変数を与える方法についてをまとめてみました。