While undertaking our adventure of migrating Rex to Ansible, we came to realize that some of the functionality in Rex wasn’t configuration management, per se. This spawned a more philosophical line of thinking around our Ansible deployment. Let me give you a couple of examples to explain.
As Ansible is a configuration tool for servers, it can install software packages using the Operating Systems package management system. Along with installation, it can also do upgrades of software packages on a server. Should you use Ansible to keep all of your systems software patched, or use a tool such as Ubuntu Landscape or Redhat Satellite?
With Ansible, it is also possible to run shell commands against your entire fleet of servers. Essentially, you can do anything. I’ve seen Ansible used to deploy software builds. But should you? Perhaps it is better to use something like Rundeck or Jenkins?
Unfortunately, there is no one right answer to these questions. There are many considerations when deciding which path to take. For example, what is the return in value vs the time deploying and maintaining these tools? Does adding these tools to your environment increase the complexity of managing things or make it easier?
With all of that said, I think the best approach is to keep these ideas in mind when you are building out automation. Stopping along the way for a gut check and ask yourself “Just because we can, does it mean we should?”