You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform如何配置仅生产环境运行指定module、开发环境跳过

实现方案(要求Terraform v0.13及以上版本)

步骤1:给web模块新增开关变量

在module/web/目录下新增variables.tf文件,添加如下变量定义:

variable "enable_nginx" {
  type        = bool
  default     = true
  description = "控制是否启用nginx_node模块"
}

步骤2:修改web模块中nginx_node的声明

编辑module/web/main.tf,给nginx_node模块添加count控制逻辑:

module "nginx_node" {
  # 开关为true时创建1个实例,为false时不创建
  count = var.enable_nginx ? 1 : 0

  source = "../vm"
  vm_name = "nginx"
  cpu = var.cpu
  disk_size = var.disk_size
  dc = var.dc
}

# mysql_node模块保持原有配置不变
module "mysql_node" {
  source = "../vm"
  vm_name = "mysql"
  cpu = var.cpu
  disk_size = var.disk_size
  dc = var.dc
}

步骤3:不同环境传入开关值

  • 编辑dev/main.tf,调用web模块时传入enable_nginx = false,关闭nginx节点创建:
module "nodes" {
  source = "../web"
  disk_size = 20
  cpu = 2
  dc = var.dc
  enable_nginx = false
}
  • prod/main.tf无需额外修改,直接用变量默认值true即可,也可以显式传值更清晰:
module "nodes" {
  source = "../web"
  disk_size = 40
  cpu = 4
  dc = var.dc
  enable_nginx = true
}

注意事项

如果你的代码中存在其他地方引用module.nginx_node的输出值,需要修改引用方式为module.nginx_node[0].输出名,因为添加count参数后,module.nginx_node会变为长度为0或1的列表,直接引用会抛出类型不匹配错误。


内容的提问来源于stack exchange,提问作者hitman222

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 17:27:03