Environment Tags

variable "environment" {
  type        = string
  description = "Deployment environment"
  validation {
    condition     = contains(["dev", "staging", "prod"], var.environment)
    error_message = "Environment must be dev, staging, or prod."
  }
}

locals {
  environment_config = {
    dev = {
      cost_center = "dev-001"
      owner       = "dev-team"
    }
    staging = {
      cost_center = "staging-002"
      owner       = "qa-team"
    }
    prod = {
      cost_center = "prod-003"
      owner       = "platform-team"
    }
  }
}

module "tags" {
  source  = "registry.patterneddesigns.ca/standardnat/tagging-policy/aws"
  version = "1.1.0"

  required_tags = ["Environment", "Owner", "CostCenter"]

  default_tags = {
    ManagedBy   = "terraform"
    Environment = var.environment
    Owner       = local.environment_config[var.environment].owner
    CostCenter  = local.environment_config[var.environment].cost_center
  }

  enforce_lowercase = true
}

provider "aws" {
  default_tags {
    tags = module.tags.merged_tags
  }
}