はじめに
Terraform使ってこなかった系SREやってた系エンジニアです。
アプリケーションエンジニアに僕は戻る。
とある案件でTerraform0.12つかうことになったんだけど、なんかうまくいかねえなあ、と思ってたこの基本的になやつ。
あちこちに書いてあるようで書いてなかった。基本的なことなのになあ。
日本語にQiitaとかみると0.11時代の書き方をそのまま持ち込んでいる人がおおかったりして、うーん、という感じ。
時代にのろう。
変数定義
varaiableなんとかで書く。
variable "project_name" {
default = {
production = "srockstyle-prd"
staging = "srockstyle-stg"
development = "srockstyle-dev"
}
}
variable "region" {
default = {
production = "asia-northeast1"
staging = "asia-northeast1"
development = "asia-northeast1"
}
}
variable "vpc_network_name" {
default = "srockstyle"
}
terraformにはworkspaceっていう機能があって、環境ごとに違う変数を割り当てたいときに使う。
workspaceごとの設定なのでproduction = "~~~"
ってのはproductionっていう名前のworkspaceの時に使われる。
workspaceごとに変更なんてしなくてもいいのなら、defaultにそのまま指定で構わない。
変数参照
参照する際はvar.[変数名]
で参照する。
resource "google_compute_network" "srockstyle-main" {
name = var.vpc_network_name
project = lookup(var.project_name, "${terraform.workspace}")
]
workspaceごとの設定をしている場合はlookupを使う。
二つ引数でlookup(var.[変数名], ${terraform.workspace)
で参照できる。
0.11?のときのように変数を"${}"
とかで囲んで指定すると「そんな古い書き方してんじゃねーよ」って怒られる。
僕は0.11つかったことないんでいいんだけど。
まとめ
完璧に理解した。