I don't much like Ansible either (I have opinions about using YAML as a programming language), but for ad-hoc maintenance of a bunch of servers, it works okay.
I don't much like Ansible either (I have opinions about using YAML as a programming language), but for ad-hoc maintenance of a bunch of servers, it works okay.
Better than writing a bash script with a for loop and nested ssh commands at least.
It is reluctant to write a config when just sending a file to multiple servers.
Now I do "ansible-playbook dist-upgrade.yml --tags prod" and it takes care of:
- Running on a subset of hosts at a time. - Pinning my own application packages so only the OS packages are updated. - Removing from the load balancer. - Doing the updates. - Adding back into the load balancer. - Waiting for the server to go healthy in the LB. - Unpinning the application packages.
I'll say: I use Ansible a lot, so I've become more comfortable with the "using YAML as a programming language", but I don't disagree with you there. It works, and you can become comfortable with it, and it isn't as bad a fit for configuration management as the base statement would make it seem, but there are things that it's a bad fit for. In particular, the looping, especially with notifications.
In the words of the venerable DevOps Borat[1], "To make error is human. To propagate error to all server in automatic way is #devops."
1: https://twitter.com/devops_borat/status/41587168870797312