Skip to content

Instantly share code, notes, and snippets.

@EdHurtig
Last active May 16, 2016 18:52
Show Gist options
  • Save EdHurtig/ddcfa496e44f34dfb0a0b7eaaf71affc to your computer and use it in GitHub Desktop.
Save EdHurtig/ddcfa496e44f34dfb0a0b7eaaf71affc to your computer and use it in GitHub Desktop.
Thoughts on Host naming conventions

Disclaimer

This is just a brain dump on my personal naming convention thoughts. This is not an officail document or decree of how you should name your servers.

Host Naming Conventions and Domain Name Management

A FQDN is made up of a {hostname}.{domain}

where the hostname is the short hostname configured on the actual server. (In linux this is retrieved via the “hostname -s” command). The Full FQDN is retrieved via “hostname -f”.

and where domain is a domain to the specific company unit and IP class for that IP Address.

The {domain} can be further broken down into

{ip_class}.{company_tld}

Where an ip_class is public for the publicly accessible IP address for the server should one exist, private is for the internal IP address. If all your servers have a third ip_class… such as a management network then it is probably as good idea to have a “management”, “drac”, “bmc” or similar ip_class such that the FQDNs to your management units are of the format {hostname}.management.{domain}. The ip_class is not always required depending on your environment, but it is strongly recommended to disambiguate your server hostname space from potential ALIAS space (______.{domain})

{env}-{service}[-subservice …]-{datacenter}-{number/id}[.private|.public].{domain}

first Mesos server (master) in prod environment, nyc1 datacenter. Points to private IP Address

prd-mesos-master-nyc1-01.private.edhurtig.com

first Mesos server (master) in prod environment, nyc1 datacenter. Points to public IP Address prd-mesos-master-nyc1-01.public.edhurtig.com

if the [.private|.public] section is ommitted, then the address is not to be assumed to be public or private. It is assumed to be an alias address meant for user consumption. For Example, this url is public www.edhurtig.com

But this URL, of the same format, is an internal (private) website that is inaccessible outside the edhurtig company network. internalweb.edhurtig.com

www.edhurtig.com should be a CNAME to whatever the public web server is: like prd-nginx-nyc1-01.public.edhurtig.com.

internalweb.edhurtig.com should be a CNAME to whatever the private web server is: like prd-nginx-internal-nyc1-01.private.edhurtig.com. This MUST not match an existing server hostname unless it points to the same server… I.E.

If I have 2 logical servers, then the {hostname} segment of the domain MUST be different. you cannot have

  • Public NGINX Server: prd-nginx-nyc1-01.public.edhurtig.com
  • Private NGINX Server: prd-nginx-nyc1-01.private.edhurtig.com

Instead, you should add a “subservice” section to the hostname of either or both of the servers

  • Public NGINX Server: prd-nginx-public-nyc1-01.public.edhurtig.com
  • Private NGINX Server: prd-nginx-internal-nyc1-01.private.edhurtig.com (I am using internal to make the point that it does not HAVE to be “private”)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment