Good application developers test their code extensively before each release. They rarely, however, provide system administrators with the ability to do the same.I hope this will start to change as DevOps becomes more popular.
One of the ideas associated with the DevOps movement is “infrastructure as code”. Each change to the IT infrastructure, just like each change to the application software baseline, must be tested. One critical and frequent change is a change to the application’s configuration. Administrators, therefore, need a tool to fully test the application’s configuration so that they can be sure that it will produce the desired behavior.
But how many well known applications provide tools to fully test every configuration option? In my experience few to none. Yet the idea is simple: an administrator wants to make a change (following the IT change management process of course!), makes the change in the Salt-Ansible-Chef-Puppet code, runs that change in the test environment, and then runs an automated test suite to verify the change has the desired effect and there is no regression. In other words administrators are following the same process as a software developers.
But how does the administrator test that a configuration change in BIND, postfix, Asterisk, Exchange, etc. are working as expected? The answer is not easily, if it can be done at all. The culture change that is DevOps requires that application developers understand and support the operations side. And supporting the operations side means providing operational test tools.
By the way, this applies to the networking infrastructure as well. The switches, routers, firewalls, WAPs, and appliances are part of the change management and configuration management processes. Changes to their configurations should also be managed, controlled, and tested. It might be more challenging on the networking side but is no less needed.