Summary
This variant uses a reverse, dot-delimited ordering to make the most specific identifier appear first, followed by location, provider, environment, and DNS domain. It is optimized for FQDN-based grouping and some DNS browsing patterns, at the cost of slightly worse “human scanning” readability.
Reading List
Purpose
Provide an alternative canonical FQDN naming pattern that prioritises service instance identity first, then locality, then provider and environment, while preserving the same underlying data fields.
Scope
In scope
- Host FQDNs for servers, nodes, and service endpoints that publish DNS records
- Internal-only DNS zones (e.g., systemdomain.internal)
- Assets that benefit from “instance-first” sorting/grouping
Out of scope
- End-user device naming (desktops/laptops)
- Display names and free-form labels
Statements
General Rules
- MUST use a single canonical naming pattern for hostnames and DNS records as defined below.
- MUST use only allowed characters:
- A-Z, 0-9, and – (Hypen)
- _ (Underscores) should not be used, and are defined for a different purpose.
- MUST be unique within its relevant namespace
Canonical FQDN
- MUST follow
- [HostProvider] as A
- [Country] as B
- [City/Town] as C
- [Service] as D
- [Iteration] as 0
- [Environment] as E
- [Domain] as F
- [TLD] as G
- [Service][Iteration].[City].[Country].[HostProvider].[Environment].[Domain].[tld]
- D00.CC.BB.AA.EEEE.FFFFFFFF.GGGG
Example:
H01.FNS.DE.HZ.PROD.DOMAIN.INTERNAL
Definitions & Constraints
- HostProvider MUST be a short, fixed 1-2 char.
- Country MUST use the UN/LOCODE country code 2 char
- Town/City MUST use the UN/LOCODE location code, typically 2-3 char
- Service MUST be a short mnemonic 1-3 char
- Iteration MUST be a small integer or hex value 0-9, A-F.
- Environment MUST be one of the approved values
- LAB
- DEV
- TEST
- STAGE
- PROD
- Domain & TLD MUST be one of the owned public/private DNS zones.
Rationale
- DNS grouping: Names naturally group by instance (H1.) and then by site (.FSN.DE.*) when browsing or filtering.
- Consistency: Preserves the same semantic fields as the non-reverse convention; only ordering changes.
- Machine parsing: Dot-separated labels map cleanly to structured fields.
Implementation Guidance
| Code | Provider | Notes |
|---|---|---|
| HZ | Hetzner | Hosting provider |
| AZ | Amazon Web Services | Cloud provider |
| MS | Microsoft Azure | Cloud provider |
| GC | Google Cloud Platform | Cloud provider |
| OP | On-prem | Internal / datacentre |
| Code | Service type | Notes |
|---|---|---|
| S | SQL/DB | Presumed SQL-based database engine, but is equally open to Postgres, Mongo, etc. |
| D | Docker | Docker Nodes |
| M | Generic Multi Purpose Member | |
| R | Routing/VPN/RRAS | Routing & Remote Access, VPN, etc. |
| W | Web | web frontends/reverse proxies |
| Code | Environment | Notes |
|---|---|---|
| lab | Lab | experiments/sandbox |
| dev | Development | active dev |
| test | Test | functional/QA testing |
| stage | Staging | pre-production |
| prod | Production | live |
Exceptions
Exceptions are allowed, but they must be deliberate and clearly declared.
Compliance & Verification
- Regex-based checks per naming class
- FQDN pattern for hosts/services
- Numeric-only device pattern with range validation
Roles & Responsibilities
- Owner: Platform/Ops
- Approvers: Team-Lead
- Implementers: Engineers creating infrastructure, services, devices
Revision History
| Version | Date | Change |
|---|---|---|
| 1.0 | 2026-02-18 | Initial |
