Skip to content

Tagging Standards

This page documents our standard AWS resource tags. Each section below defines one tag: what it's for, when it's required, and the format its values should follow. Additional sections will be added as we define more tagging standards.

How Tags Are Applied

Tags are applied to resources in a few ways:

  • default_tags — defined per environment in terraform.tfvars and applied by the AWS provider to all resources in that environment (for example, the Owner tag in the dev environment).
  • Per-resource tags maps — most resource definitions in terraform.tfvars accept a tags map. For EC2 instances, the instance module merges these with the automatically generated Name tag.

Standard tags defined on this page should be set in the per-resource tags map unless the standard says otherwise.

application

The application tag identifies the application or workload a resource supports. Its primary purpose is grouping hosts by application in Ansible: the ansible-epic dynamic inventory (see inventory.azure.constructed.yml) builds an app_<application> group from the tag (e.g. app_kuiper, app_systempulse), so tagging an instance is all it takes to place it in the right Ansible group and pick up that application's group_vars. Hosts missing the tag fall into app_unclassified.

The tag also enables grouping, filtering, and reporting by application elsewhere (for example, in Cost Explorer and resource groups).

Format

  • Key: application (all lowercase)
  • Value: lowercase letters and digits only — no spaces, hyphens, or underscores. Multi-word application names are run together (System Pulsesystempulse), and abbreviated names use the abbreviation (Hyperspace Webhsw).
  • Use the same value for every resource belonging to the same application so grouping and filtering work consistently.
  • The value becomes the Ansible group name suffix (app_<value>), so it must match the application name used in the ansible-epic repo's group_vars.
  • Always use the value from the table below. If the application isn't listed yet, add it to the table in the same change that introduces the tag.

Application Values

Application Tag Value
Authentication Hyperspace Web ahsw
Cogito Clarity cog
Hyperspace Web hsw
Interconnect Background icbg
Interconnect Foreground icfg
IRIS/ODB odb
Kuiper kuiper
Multipurpose SQL Server msql
NGINX nginx
SMTP Forwarder smtp
System Pulse systempulse

Where to Set It

Add the tag to the tags map of the resource definition in the environment's terraform.tfvars:

instances = {
    kuiper = {
        # ...
        tags = {
            PatchGroup  = "epicIREwss"
            application = "kuiper"
        }
    }
}