9
6

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】Terraformで扱える変数とデータ型まとめ

Posted at

はじめに

udemyを使ってTerraformの勉強をしたので、Terraformで扱える変数とデータ型についての学習備忘録です。

HCL2とは

Terraformは、HCL2言語で書きます。
HCL2とは、the HashiCorp configuration languageです。

コメントの書き方

# コメントは#で書ける

ブロックタイプとは

下記のコードで、resource部分をブロックタイプと言います

resource "aws_instance" "hello-world" {

ブロックタイプまとめ

種類 説明
locals 外部から変更できない変数
variables 外部から変更できる変数
terraform terraformの設定
provider プロバイダ
data terraform管理していないリソースを参照する
resource terraform管理対象となるリソース
output 外部から参照できるようにする値

localsの定義

localsブロックで定義して、${local.<NAME>}で参照します

locals {
  name = "HelloWorld"
}
resource "aws_instance" "hello-world" {
  ami           = "ami-0ce107ae7af2e92b5"
  instance_type = "t2.micro"
  tags = {
    Name = "${local.name}-ec2"
  }
}

variablesの定義

variablesブロックで定義して、${var.<NAME>}で参照します

# variable <変数名>
variable "name" {
  type    = string       # 変数の型
  default = "HelloWorld" # デフォルト値
}
resource "aws_instance" "hello-world" {
  ami           = "ami-0ce107ae7af2e92b5"
  instance_type = "t2.micro"
  tags = {
    Name = "${var.name}-ec2"
  }
}

HCL2で扱えるデータ型

プリミティブ

string : Unicode文字列

number : 数値。整数と少数の両方を表現する

bool: true/false

variable "string" {
  type    = string       # 変数の型
  default = "HelloWorld" # デフォルト値
}

variable "number" {
  type    = number # 変数の型
  default = 10     # デフォルト値
}

variable "bool" {
  type    = bool # 変数の型
  default = true # デフォルト値
}

構造体

object({<NAME>=<TYPE>, ...}) : キーバリュー型データ

# 定義
variable "object_sample" {
  type = object({
    name = string
    age  = number
  })
  default = {
    name = "sasayoshi"
    age  = 100
  }
}
# 参照
Name = ${var.object_sample.name}

tuple([<TYPE>, ...]) : 各列の型が決まっている配列

# 定義
variable "tuple_sample" {
  type = tuple([
    string, number
  ])
  default = ["sasayoshi", 1000]
}
# 参照
 Name = "${var.tuple_sample[0]}"

コレクション

list(<TYPE>): 特定の型で構成される配列

# 定義
variable "list_sample" {
  type    = list(string)
  default = ["hoge", "hogehoge"]
}
# 参照
Name = "${var.list_sample[0]}"

map(<TYPE>): キーが文字列の配列

# 定義
variable "map_sample" {
  type = map(string)
  default = {
    "High" = "m5.2xlarge"
    "Mid"  = "m5.large"
    "Low"  = "t2.micro"
  }
}
# 参照
instance_type = var.map_sample.High

set(<TYPE>): 値の重複がない配列

# 定義
variable "set_sample" {
  type = set(string)
  default = [
    "tanaka",
    "sato",
    "tanaka",
    "sato"
  ]
}
# 参照
[for itm in var.set_samle : itm]

 toset([
    "sato",
    "tanaka"
  ])

以上です。今日は、Terraformで扱える変数とデータ型をまとめてみました。

9
6
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
9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?