I use Ansible and love it. What really hooked me at first was the ansible_facts. One simple playbook would return a scathing amount of information about a given system. Early on I just saved the output and grep'd it for the key:value
pair I wanted. There's probably a better way to do that.
In the simplest configuration example, you keep an "inventory" of hosts you want to run Ansible on. It's something like:
[my_hosts]
host1.mydomain.com
host2.mydomain.com
...
Then you can run an Ansible "playbook" on my_hosts
and it will hit every host you have configured in that block. A playbook is just a YAML configuration containing commands, variables and formatting which Ansible understands. It's not a shell script. It's a "way" to tell Ansible what to do on a host. It took me a while to wrap my head around it.
Again, for simplicity sake, you can make a playbook that runs a shell command and run that playbook on every host. Here's an "uptime" playbook I used often.
---
- hosts: all
gather_facts: false
tasks:
- name: uptime for host
shell: uptime
register: output
- debug: var=output.stdout_lines
# print a formatted line for grep/sed mining
- debug: msg="grepme {{ inventory_hostname }}:{{ output.stdout_lines}}"
Things get way more involved that this but it's daunting to first get started. Keeping things simple with just shell commands can get your feet wet but once you get beyond simple things, you should look into more "Ansibly" ways of doing things which are more complex and harder to work with, but they do pay off.