Terraform - Variables
概要
variables.tf
でリソースに指定するパラメータの値を変数として定義する方法について、詳細をまとめます
全体像
以下にリソース:VPCのCIDRに変数を指定する例を示します
同一ファイル上にvarialbe
とresource
を記述することもできますが、複雑なリソースやリソース数が増えてくると管理が判断になるため、リソースとは分離しておくことが一般的です
-
variables.tf
variables "vpc-cidr" { type = "String" description = "VPCのCIDR" default = "172.16.0.0/16" }
-
main.tf
resource "aws_vpc" "my_vpc" { cidr_block = var.vpc-cidr tags = { Name = "tf-example" } }
基本構文
variavles "<変数名>" {・・・}
の形式で変数を定義します
-
<変数名>
変数名は予約後を除く、任意の名称を設定可能
しかし、他変数名と重複できない -
{・・・}
変数に対して、型(type) / 説明(descripton) / デフォルト値(default) を定義します
-
type
変数の型を定義します
型の種類は、文字列(string) / 数値(number) / 真偽値(bool)が存在します以下のように記述することで、コレクションなど複雑な型を指定できます
詳細については、【別ページ】を参照します・list(<TYPE>) ・set(<TYPE>) ・map(<TYPE>) ・object({<ATTR NAME> = <TYPE>, ... }) ・tuple([<TYPE>, ...])
-
description
変数に対しての説明を記述します
-
default
変数が持つデフォルト値を定義します
構築作業実施、コマンドの引数や別ファイルを利用して上書き可能です
-
変数の更新
variavles "<変数名>" {・・・}
の形式で定義した変数はデフォルト値です
よって、後続処理にて、変数の値を変更(デフォルト値からの上書き)が可能です
-
コマンド実行時にオプション指定で更新する
terraformコマンドのオプションで-var '<変数名>=<値>'
と指定することで変数に値を更新することができます$ terraform apply \ -var 'vpc-cidr=192.168.0.0/16'
-
環境変数で更新する
認証用のアクセスキー / シークレットアクセスキーなど、コマンド実行時の引数に設定しにくい変数の場合に利用する
TF_VAR_<変数名>
という名前の環境変数を事前定義することで、terraformコマンド実行時に自動で読み込まれます$ export TF_VAR_access_key="AKIAXXXXXXXXXXXXXXXXXX" $ export TF_VAR_secret_key="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
-
ファイルで更新する
terraform.tfvars
というファイルを作成し、<変数名> = "<値>"
で更新した変数を指定することもできます
環境変数同様にterraformコマンド実行時に自動で読み込まれます- terraform.tfvars
vpc-cidr=192.168.0.0/16
- terraform.tfvars