Terraform环境相关技巧
假设我们继续讨论,存在以下三个环境。
-
- dev: 開発環境
-
- stg: ステージング環境
- prd: 本番環境
在工作空间中准备并建立开发环境来推进构建。
$ 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}"
~~~~~以下略~~~~~~