<pre>

$ ansible --version
ansible 2.1.0.0
config file = /etc/ansible/ansible.cfg
configured module search path = Default w/o overrides


# Create Inventory

echo "# Ansible Inventory " > /etc/ansible/hosts
echo "localhost" >> /etc/ansible/hosts

or 

echo "localhost ansible_python_interpreter=/usr/bin/python2" >> /etc/ansible/hosts

# .ssh/config

You can use your ssh/config to add hosts with complex configuration such as ssh port, different user, via proxy etc OR you can use your ansible hosts file. I prefer the ssh/conf file

eg.

$ more .ssh/config

Host odroid
Hostname 10.20.30.40
User ebal2
Port 2222
IdentityFile /.ssh/odroid.key
VisualHostKey yes
Compression yes
ForwardAgent yes

or

odroid ansible_host=10.20.30.40 ansible_port=2222 ansible_user=ebal2 ansible_ssh_private_key_file= /.ssh/odroid.key


# Ad-hoc commands


$ ansible -m ping all

localhost | SUCCESS => {
"changed": false,
"ping": "pong"
}


# Gather Facts

$ ansible -m setup localhost


# Simple commands

$ ansible -m shell -a 'uptime' localhost

localhost | SUCCESS | rc=0 >>
18:40:13 up 23:33, 2 users, load average: 0,17, 0,32, 0,23

or

$ ansible -a 'uptime' localhost

localhost | SUCCESS | rc=0 >>
18:40:42 up 23:34, 2 users, load average: 0,41, 0,37, 0,25

# Playbooks

$ cat upgrade.yml


– hosts: all
# use sudo
become: yes

# setup module
gather_facts: no

tasks:


run a playbook:

$ ansible-playbook upgrade.yml -l ebal

PLAY [all] *

TASK [upgrade all packages]
changed: [ebal]

PLAY RECAP *
ebal : ok=1 changed=1 unreachable=0 failed=0


</pre>