環境は以下の3つの環境があるということにして話を進めます
- dev: 開発環境
- stg: ステージング環境
- prd: 本番環境
workspaceの用意と開発環境で構築を進める
$ terraform workspace new dev
$ terraform workspace new stg
$ terraform workspace new prd
$ terraform workspace list
* default
dev
prd
stg
$ terraform env select dev
参考 https://www.terraform.io/docs/state/workspaces.html#using-workspaces
Terraform内で環境情報を利用する
単純な呼び出し
count = "${terraform.env}"
環境ごとに変数の内容を切り替える
変数定義
variable "demo" {
type = "map"
default = {
dev.comment = "開発環境だよー"
stg.comment = "ステージングだよー"
pro.comment = "本番だよー"
dev.instance_count = 1
stg.instance_count = 3
prd.instance_count = 10
}
}
利用側
comment = "${lookup(var.demo, "${terraform.env}.comment")}"
count = "${lookup(var.demo, "${terraform.env}.instance_count")}"
環境ごとにリソースの数を変える
↑で定義した変数をそのまま使います
resource "aws_lambda_function" "log_warner" {
count = "${lookup(var.demo, "${terraform.env}.instance_count")}"
~~~~~以下略~~~~~~
開発環境にはリソースを作らない
開発環境はアラートいらないよねーって言う時などに使う
resource "aws_lambda_function" "log_alart" {
count = "${terraform.env == "dev" ? 0 : 1}"
~~~~~以下略~~~~~~