open-navigator / web_docs /docs /deployment /azure-naming-conventions.md
jcbowyer's picture
Clean HuggingFace deployment without binary files
e59d91d
|
Raw
History Blame Contribute Delete
5.09 kB
metadata
sidebar_position: 6

Azure Naming Conventions

We follow Microsoft's Cloud Adoption Framework (CAF) naming and tagging guidance for all Azure resources. Consistent names make resources self-describing (type, workload, environment, region) and keep cost reports, RBAC, and automation predictable.

Our subscription naming (opennav-prod, etc.) already uses this convention β€” see Azure Subscriptions Setup. This page is the standard to follow inside those subscriptions.

The pattern

<resource-type>-<workload>-<environment>-<region>-<instance>
Component Meaning Examples
resource-type CAF abbreviation for the resource rg, st, kv, psql
workload App / project short code opennav
environment Deployment stage prod, nonprod, sandbox
region Azure region short name eastus
instance Zero-padded instance number 001

Example: a production resource group β†’ rg-opennav-prod-eastus-001.

Rules: lowercase, hyphen-separated, segments in this fixed order. Omit a segment only when it doesn't apply (e.g. globally-unique types that forbid hyphens β€” see below).

Our standard values

Slot Allowed values
Workload (org_prefix) opennav
Environment prod, nonprod, sandbox
Region eastus (primary)
Instance 001, 002, …

These mirror the Terraform variables in infra/azure (org_prefix, the subscriptions map keys).

Resource type abbreviations (CAF)

Common ones we use. Full list in the CAF abbreviation reference.

Resource Abbrev Example
Resource group rg rg-opennav-prod-eastus-001
Storage account st stopennavprodeus001 ΒΉ
Key Vault kv kv-opennav-prod-eus ΒΉ
PostgreSQL flexible server psql psql-opennav-prod-eastus-001
App Service plan asp asp-opennav-prod-eastus-001
Web App / App Service app app-opennav-prod-eastus-001
Function App func func-opennav-prod-eastus-001
Container registry cr cropennavprod001 ΒΉ
Virtual network vnet vnet-opennav-prod-eastus-001
Subnet snet snet-opennav-prod-eastus-001
Network security group nsg nsg-opennav-prod-eastus-001
Log Analytics workspace log log-opennav-prod-eastus-001
Application Insights appi appi-opennav-prod-eastus-001
Managed identity id id-opennav-prod-eastus-001
Management group mg mg-opennav-platform
Databricks workspace dbw dbw-opennav-prod-eastus-001

Databricks managed resource group. Creating a Databricks workspace auto-creates a second, Azure-managed resource group named databricks-rg-<workspace>-<hash> (holding the workspace's VNet, storage, NAT gateway, etc.). You don't name or manage that one β€” Azure owns it.

ΒΉ Globally-unique / restricted names. Some resources have tight rules that break the standard pattern:

  • Storage account β€” 3–24 chars, lowercase letters + digits only, no hyphens, globally unique. Use a compact form: st + workload + env + region-short + instance, e.g. stopennavprodeus001.
  • Key Vault β€” 3–24 chars, globally unique; hyphens allowed but keep it short.
  • Container registry β€” 5–50 chars, alphanumeric only, globally unique.

When hyphens aren't allowed, drop them and shorten the region (e.g. eus for East US) β€” but keep the same segment order.

Tagging

Every resource carries these tags (the Terraform applies them via common_tags):

Tag Value
managed_by terraform
project open-navigator
environment prod / nonprod / sandbox
cost_center engineering
owner resource owner

Tags drive cost attribution and lifecycle policies β€” prefer them over encoding extra metadata into names.

Region short names

Region Long Short
East US eastus eus
West US 2 westus2 wus2
Central US centralus cus

Use the long form in the standard pattern; use the short form only for hyphen-restricted names.

References