😎
自分用terraform構文メモ
プロバイダ(provider)
provider "<プロバイダ>"{
region = "<resion>"
}
リソース(resource)
resource "<プロバイダ>_<リソース>" "<名前>" {
[設定・・・]
}
リソース属性の参照
<プロバイダ>_<リソース>.<名前>.<属性>
入力変数(variable)
variable "<名前>"{
description = "<変数の説明>"
default = <変数に値が渡されなかった時のデフォルト値>
/*変数への値渡しは、コマンドラインで渡す-varオプション、
ファイルで渡す-var-fileオプション、TF_VAR_<変数名>の環境変数で渡す方法がある*/
type = 型指定 #object型を指定することもできる
validation = <最大値や最小値強制など、型チェック以上のルール指定ができる>
sensitive = <trueの場合、planやapplyの際に値をログに残さない>
変数参照
var.<変数名>
文字列の中で参照する場合は ${var.<変数名>}
出力変数
output "<名前>"{
value = <値(出力したいterraform式)>
description = "<変数の説明>"
sensitive = <trueの場合、planやapplyの最後に出力を表示しない>
depends_on = <追加のヒント>
/*例えば、EC2のIPを返す変数を指定したいが、EC2に対してセキュリティグループが正しく
設定されるまでIPはアクセス可能にならないようにしたいとき、
IPとセキュリティグループに依存性がある事をdepends_onを使用して記載する*/
出力変数の表示
planやapplyの時にコンソールで出力する。
また、terraform output <変数名> で表示できる
データソース(data)
データソースとは、プロバイダから取得する読み出し専用の情報で、例えばAWSではVPC情報、サブネットの情報、AMI ID、IP範囲、現在のユーザの情報などを提供する
data "<プロバイダ>_<データソース型>" "<名前>"{
・・・
}
データソースから情報を取り出すには
data.<プロバイダ>_<データソース型>.<名前>.<属性>
複数行記述(EOF)
「<<<-EOF」と「EOF」で\nを入れなくても複数行記述できる
resource "aws_instance" "XXX"{
・・・
user_data = <<-EOF
#!/bin/bash
・・・
・・・
EOF
Discussion