Comment on Is ansible worth learning to automate setting up servers?
SquiffSquiff@lemmy.world 6 months ago
Coming from what looks to me like a different perspective to many of the commenters here (Disclosure I am a professional platform engineer):
If you are already scripting your setups then yes you should absolutely learn/use Ansible. The key reasons are that it is robust, explicit, and repeatable- doesn’t matter whether that’s the same host multiple times or multiple hosts. I have lost count of the number of pet Bash scripts I have encountered in various shops, many of them created by quite talented people. They all had problems. Some typical ones:
Issue | Example |
---|---|
Most people write bash scripts without dependency checks | ’Of course everyone will have gnu coreutils installed, it’s part of every Linux distro’ - someone runs the script on a Mac |
We need to pass this action out to a command-line tool, that’s obvious | Fails if command-line tool isn’t available, no handling errors from tool if they aren’t exactly what’s expected |
Of course people will realise that they need to run this from an environment prepared in this exact (undocumented) way | Someone runs the script in a different environment |
Of course people will be running this on x86_64/AMD64, all these third party binaries are available for that | Someone runs it on ARM |
Of course people will know what to do if the script fails midway through | People try to re-run the script when it fails mid-way through and it’s a mess |
The thing about Ansible is that it can be modular (if you want) and you can use other people’s code but fundamentally it runs one step at a time. You will know for each step:
- Are dependencies met?
- Did that step succeed or fail (in realtime!)?
- (If it failed) what was the error?
- (Assuming you have written sane Ansible) you can re-run your playbook at any time to get the ‘same’ result. No worries about being left in an indeterminate state
- (To an extent) It is self-documenting
- Host architecture doesn’t really matter
- Target architecture/OS is specified and clear
yopla@jlai.lu 6 months ago
That’s why I always use the best of both world.
;)