Using Ansible has fundamentally changed the way I interact with the applications on my network. Not long ago I would have sought applications that had a GUI. Now I avoid them. This is why I changed my mind about Zentyal. It’s a nice piece of software but I no longer want to manage my systems with a GUI.
GUIs mean manual changes and manual changes are bad. My preferred mode is now total automation. Want to change a file permission? Automate it. Want to add a user? Automate it. My goal is to automate 100% of all systems administration tasks, no matter how trivial.
Though it sounds extreme the benefits of this approach are:
- A record of all changes.
- Changes can be easily undone (backed out).
- The knowledge behind the change now become part of the company knowledge base because now it’s documented.
- Reduces security threats from unauthorized manual changes.
- Reduces stability issues from unauthorized manual changes. Instead, automated changes go through the test process.
- Assists recovery by making it possible to fully recreate the application’s previous state. No odd work-arounds to remember, it’s all written down.
From this perspective I now view the ability to fully automate the installation, configuration, and management of an application as a part of good design. Hence its absence now becomes an anti-pattern. I’ll call it the “manual configuration anti-pattern”. When you install an application and it stops and asks you for input, that is an example of this anti-pattern.
Commercial software often suffers from this problem. They will provide a nice GUI to configure their software. Their intent is to make it more usable so I can’t blame them. Still, times have changed. I hope they will keep their GUIs but make their apps automation friendly. This is exactly the situation I’m in with Jira. It’s a nice piece of software but it isn’t easy to find the information needed to fully automate it with Ansible. Its documentation is geared towards manual changes via its web GUI.
I think eventually the needs of the automated CM tools will prevail and the developers will take notice. I find it ironic that the old school Unix command-line-plus-text-configuration-file method is now a good fit for 21st century automated systems management.