The management of IT infrastructure is a constantly evolving topic. A very interesting concept that emerged in the last decades is the idea of infrastructure as code: instead of configuring servers in an artisanal fashion, the process is formalized into definition files, which are then automatically “executed”. There are multiple advantages, notably:
- The files always reflect reality, avoiding “undocumented last-minute patches”
- Versioning the files gives us a history of the changes
- Reusing the configurations across multiple machines gives us uniformity (e.g. same version of tools everywhere)
- Rebuilding a server in case of a crash requires only spawning a new one and reapplying the configuration
Ansible is one of the more popular tools in this domain, along well-known others such as Puppet, Chef or Salt. Many admins choose it because it is easy to use, yet at the same time very powerful. It is also very well documented. If you are reluctant to adopt such a tool because you fear the benefits do not justify the complexity, Ansible might convince you otherwise: you can start managing a single service, moving on to a whole server when comfortable, perhaps extending to dozens or thousands of them when the need arises.
At the C4DT factory, we manage a few servers with multiple services. We have started to move from manual configuration to using Ansible, and the results are very encouraging. If we have piqued your curiosity, jump in and have a look at the quick start!