Test that Ansible is setup correctly to communicate with all hosts in your inventory using the ping
module;
$ ansible all -m ping
Fetch and display to STDOUT Ansible facts using the setup
module;
$ ansible all -m setup
Example Output;
node-2 | SUCCESS => { "ansible_facts": { "ansible_all_ipv4_addresses": [ "10.0.1.57" ], "ansible_default_ipv4": { "address": "10.0.1.57", "alias": "eth0", "broadcast": "10.0.1.255", "gateway": "10.0.1.1", "interface": "eth0", "macaddress": "0a:5e:fb:bf:e8:aa", "mtu": 9001, "netmask": "255.255.255.0", "network": "10.0.1.0", "type": "ether" }, "ansible_default_ipv6": {}, "ansible_device_links": { "ids": {}, "labels": {}, "masters": {}, "uuids": { "xvda2": [ "65722bd1-fccc-453e-a96a-8f3599aa0466" ] } }, <<< Output Truncated >>>
Setup and enable the EPEL package repository on the hosts in the "web" group using the yum module;
$ ansible web -b -m yum -a "name=https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm state=present"
Note
|
Run this the command the first time and notice the changes as identified in stdout. |
Re-run the above command and notice ansible does not attempt any changes as the package has been installed. the new output from re-running the command should be similar to below;
node-1 | SUCCESS => { "changed": false, "failed": false, "msg": "", "rc": 0, "results": [] } node-2 | SUCCESS => { "changed": false, "failed": false, "msg": "", "rc": 0, "results": [] } node-3 | SUCCESS => { "changed": false, "failed": false, "msg": "", "rc": 0, "results": [] }
EXTRA CREDIT: Try running the following commands on your control node and review the output. The last command shows how to specify a specific node for exclusion using the "--limit" switch.
$ ansible all -m setup -a "gather_subset=virtual"
$ ansible all -m setup -a "filter=ansible_fqdn"
$ ansible all -m command -a "uptime"
$ ansible all -m ping --limit '!control'