I am strictly non-partisan when it comes to technology choices like operating systems. I simply want the best choice for the circumstances. I decided up-front that I wanted to use the same operating system for all my VMs to make automating their deployment and configuration as easy as possible.
I considered the following operating systems:
- Illumos (aka Solaris)
- CentOS Linux
- Ubuntu Linux
My criteria for selecting one were, in order of priority:
- Free or very low cost. This is a personal experiment and I don’t want to spend a lot of money on licensing.
- Can run automated system configuration tools. The OS must be supported by at least one of the automated tools such as Chef or Ansible.
- Stable. I want one that is very stable and reliable.
- Will run my applications. The OS should be able to run the my key applications such as FreeSwitch, git, OpenNMS, Java, postfix, etc.
- Is well supported. By this I mean that it is a) well documented by books, manuals, and Internet howto articles, and b) the applications I want to run have already been packaged to run on this OS.
- Security. The operating system has few security holes.
- Features. For me this is the least important. I rate the latest and greatest features very low.
Except for cost, I would use these same criteria in a business setting. I would always favor reliability and ease of administration over features.
And the winner is… CentOS Linux. I chose CentOS by a process of elimination. In science your goal isn’t to prove but to disprove. You count a hypothesis as tentatively confirmed only when you cannot disprove it. Similarly, in decision theory you eliminate the lowest scoring options and pick the remaining one. That is how I arrived at CentOS.
To start with I had no objection to using Windows for my experiment. I eliminated it due to cost, support by automated system management tools, and application availability. Windows did not support the tools and applications I want to run. I may still add a Windows server for Active Directory support if I cannot get Samba 4 to work. But that is a future consideration.
I tried Illumous as part of SmartOS. I will write more about that in my post on hypervisors. I really wanted Illumous to work because I think Solaris is the second all time best operating system. The first is Symbolics Genera and, yes, I am saying that an OS from the 1980s was the best one ever written. Anyway, the problem I has with Illumous is support for the applications. Its stability and feature set are amazing but I did not want to spend the time trying to compile all my key applications for Solaris. I doubt it would work for many of them. Plus Illumous is not very well documented; a fact which only adds to the time and trouble.
I have long admired OpenBSD for its focus on security and stability. Those are very important business features and hit two of my key priorities. The problem with OpenBSD is again one of application support. It didn’t have my applications available as pre-built packages.
That left me with a choice between CentOS and Ubuntu. I have used both and in my (admittedly subjective) experience CentOS is the more stable of the two. It appeared that Ubuntu prioritized features higher than CentOS. Still, it could have gone the other way, and I’m sure either would have been a good choice.
But is it really a good idea to use a “mono-culture” approach to operating systems? It is true that if CentOS has a security hole then all the systems in my network will be vulnerable to it. The alternative is to include a variety of operating systems such as the ones from my list. If security were the priority then I think it would make sense to have a heterogeneous operating system environment.
However, if stability and ease of administration are the highest priorities then it does not. Adding different operating systems adds complexity and increases the risk of problems. An application may run well on one operating system using a certain configuration but not so well on a different operating system with that same configuration. Therefore, I think it makes sense to trade reliability and ease of administration for security. Every choice requires trade-offs, the key is to know what your priorities are. You can’t have everything.