Example Code

$ cat main.tf
variable "enable_foo" {
  type    = bool
  default = false
}

module "foo" {
  for_each = toset(var.enable_foo ? ["enabled"] : [])
  source   = "./foo_module"
  name     = "myfoo"
}

output "bacon" {
  value = var.enable_foo ? module.foo["enabled"].bacon : ""
}

output "foo" {
  value = var.enable_foo ? module.foo["enabled"] : {}
}

$ cat foo_module/main.tf
variable "name" {}

output "name" {
  value = var.name
}

output "bacon" {
  value = "cheese"
}

Results

$ terraform init >/dev/null; terraform apply -auto-approve -var enable_foo=true
 
Apply complete! Resources: 0 added, 0 changed, 0 destroyed.
 
Outputs:
 
bacon = "cheese"
foo = tomap({
  "bacon" = "cheese"
  "name" = "myfoo"
})
 
$ terraform init >/dev/null; terraform apply -auto-approve -var enable_foo=false
 
Apply complete! Resources: 0 added, 0 changed, 0 destroyed.
 
Outputs:
 
bacon = ""
foo = {}