The basic model for Unix and Linux systems is to use small, single purpose programs or utilities to accomplish a single task and to combine these simple modules to perform a complex task. For system management, these modules are typically used by calling them from shell scripts and piping the output of one module to the next.
The other common element is to use text based configuration files. These files are designed to be human readable – to be edited and understood by people.
The result is a very flexible system that can be configured and maintained though human-centric, text based interfaces. It supports automation, works with simple interfaces (shell and SSH), and enables an experienced Linux system administrator to manage a large number of systems. Little software needs to be installed; you do not need a graphical environment or a large set of additional software; all of the software you need is part of a normal Linux installation. The approach is also portable – you use the same tools to manage systems whether they are physical, virtual, or in the cloud.
There are, of course, some drawbacks to this approach. It depends on a skilled system administrator, and has a fairly steep learning curve. Human readable configuration files can be challenging for software outside of the targeted application to parse. Shell scripts can be fragile, with limited flexibility and exception handling. Each individual subsystem tends to have its own “look and feel”, meaning that you have to learn the idiosyncrasies of each subsystem.
Many of the elements of Linux system management that support direct human interaction have the unintended consequence of making it challenging to automate, resulting in few integrated management suites or integrated graphical interfaces. (Many tools have their own GUI, which talks directly to the underlying application or tool.)
Finally, the entire management model is built around running local tools directly on the system being managed. This means that you have to login to each system to manage it – the most widely used management tool is ssh!
Let me be clear: Linux is a very manageable system. The existing tools, techniques, and approaches work and work well. We believe that it is possible to improve the current state of Linux system management without discarding all of the work that has been done. We believe that Linux system management can be made easier, more flexible, more automated, and support both local and remote systems.
We not only believe this, we are doing it in the OpenLMI project. We will be covering OpenLMI in a series of blog postings and welcome your feedback and comments. We invite you to join us on this journey to move the management of Linux systems to the next level – to provide a common, consistent way to manage Linux systems, from the most complex Enterprise Servers to virtual machines.