I’ve posted this in this in the comments section of a couple of blogs. I figure this might be a good permanent place for it.
One of the people who filled the Director of Technology role here at
Boston.com had some very specific rules for machine naming. His machine
naming guidelines for the sysadmins were almost a thorough as the coding
guidelines he had for the developers.
The ones that I can remember are:
- Names must be short. No one will want to type
blue-canary-in-the-outlet-by-the-lightswitch five times in a row. - Similar machines can have names along the same theme, but don’t choose a theme that is a set that inherently ordered or can’t handle additions or deletions. A pair of clustered database machines shouldn’t be named “Bert” and “Ernie”. What do you do when you add a third machine to cluster? Do you call it “Twidlebug”? “Grover”?
- When a machine is retired, the name is retired. When a machine is repurposed, the name gets moved with it. You don’t want to be looking through a logbook and see a reference to “mrburns”, you don’t want to be wondering if it was 1U DualPentium III or the Sun Ultra-2. Neither do you want to be trying to remember all the former names some random old piece
of hardware. - The names of the machines are only to be used internally within the Technology department, and never disseminated. Before anyone else finds out about a machine, it gets a cname that describes its function. It never goes well when you are questioned by a VP that a manager told him that an employee told him that there was some problem with a “golobulus” the other day that caused his reports to be late.
- If his rules were broken, and his predicted outcome resulted, do not fix the problem by starting over (essentially, do not commit error three to fix a problem caused by commiting errors one through five.) It will just compound the problem.
I have to say, since he left we’ve broken every rule and each time he was right.
Some naming schemes that come to mind, Tourist Destinations (disney, vegas, chinatown, etc.) MBTA stops ( park, central, hynes, chinatown.), GI Joe heros, GI Joe villians, highlander characters, Greek and Roman Gods, Simpsons characters, common first names, Perl operators, and simple sequential ordering (“x01″, “x02″, etc.)
The Lone Sysadmin points to Naming Schemes, a wiki full of naming scheme ideas. Site site has a few of the ones you’ve listed (the Simpsons and G.I. Joe) but is missing some of the others (like MBTA stops and tourist traps).
I think by far, the best rule that was broken is #4. It brings a smirk to my face every time I think about it
The funny thing is rule 4 never went away. It was circumvented by the users, who apparently preferred the Tech naming scheme. And I’d argue that user feedback on the GI Joe naming scheme proves that it was a useful or descriptive at least scheme. Perhaps it was the thorough addition of login messages describing the naming scheme. If more of that was followed through, more naming schemes might be successful.
At a former job (pre-current, post-Boston.com), the the general rule was that machines got three names:
* An informal host name that stayed with the machine even if it got repurposed, in keeping with rule #3 there. These names were almost always Simpsons characters, since there’s hundreds of them to choose from, so you’re not likely to run out any time soon.
* A long-named alias based on that machine’s current function — “bos-lan-desktop-mac-cdevers”, or “bos-lan-db1″, etc.
* A short-named alias based on the same function, but abbreviated to save typing — “cdevers”, “cdevers-w2k”, “cdevers-ibook”, “db1″, etc.
If a machine had more than one role, it could have more than one set of aliases pointing to it; if a role migrated from one machine to another, the role-alias would move with it so that people would keep going to “rt” or “wiki” in their web browsers and not have to know that the service was being provided by “smithers” instead of “barney”, for example.
In response to Dan’s point — hi, Dan! — people tended to know the hostname of their own desktop, if only because it would have a label right on it somewhere, but they weren’t really exposed to the hostnames for the servers until the service running on them was ready, at which point they’d be told “go to http://rt to get to RT” or whatever, so bookmarks etc would all point to the service, not the Simpsons character. Developers and sysadmins would know the real names, of course, but they were expected to know better than to use them directly, so it mostly worked out smoothly.
I don’t know that the people who came up with this were formally going by the guidelines you state here, but it worked out the same way, and it worked really well.
I think Dan’s point went to The Bonzai workbench names. Even once we put a load balancer in front of them, and strongly encouraged people to use “workbench.boston.com” rather than “pythona.boston.com”, people still had their favorite GI Joe character and preferred to go to their favorite machine.
Right. The trick is that end-users aren’t supposed to find out the “cute name” to begin with.
Developers or sysadmins might be in the habit of ssh’ing to “destro” or “mrburns” instead of “cms” or “db”, but they’re expected to have the discipline to [a] not share that name with end users, and perhaps more importantly [b] only use the service label hostname with any scripts they write that access that host.
You’ve got to have some discipline somewhere or no convention is going to hold up. :-)