😎

自分用terraform構文メモ

2024/09/28に公開

プロバイダ(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