| I would argue that all deployments (no matter how small) should have configuration management. In the simplest case, a deployment consists of:
1. Install packages
2. Install configuration files, possibly from templates.
3. Configure services to start on boot. This kind of automation is trivial to do with almost any tool, but there's no reason not to use something like Ansible that's designed for infrastructure automation, because you get encrypted secrets, templating and idempotency with zero effort and the result can be stored in a git repository somewhere. The Ansible playbook is as fast to write as installing and configuring things manually, and after some practice, it's faster and the resulting system is of higher quality. Even if you end up using the automation you write only once, it still has value because it doubles as a formalized description of what you did, and can be stored together with additional documentation. Over time you will also accumulate a library of bits and pieces that you can copy over to new setups, further improving your speed and quality. |
I would argue that in most cases, they don't need anything but some documentation explaining what was installed, and why.
I will take a word file with screenshots over a broken script in an obscure language every single time.
> but there's no reason not to use something like Ansible that's designed for infrastructure automation,
There's a big one: my time isn't free.
If someone is willing to waste money on that, sure, I'll be happy to bill them for their extravagant tastes (but only after having done my best to explain them it's a waste of money)
And still, I will think about the next person that may have to maintain or tweak whay I wrote, so I will also leave a document full of screenshots in case they don't know ansible or whatever new fashionable tool that the client may have specifically requested.
> it's faster and the resulting system is of higher quality.
Not everything needs to be of high quality.
Forgive me if I'm assuming your gender, but I see a lot of black-and-white thinking among male sysadmins/devops: it's good or it's bad, it's high quality or it's not.
I prefer to have a "sufficient" degree of quality: if a checklist is enough, I will not waste time writing a script. If a shell script is enough, I will not waste time writing proper code - and so on.
> Over time you will also accumulate a library of bits and pieces that you can copy over to new setups, further improving your speed and quality
Except you assume a continuous progress, without any change of scope or tools, and with the tools themselves never evolving. It doesn't work like that: over time, you will accumulate a bunch of useless code for old versions.
Even small inconsequential changes (like unbound in debian 11 requesting spaces before some options, which wasn't the case before) will take some time and effort. Why waste your energy one one shots?
The do-nothing approach argues that you should avoid premature optimization, which strikes me a good approach in software in general.