View source for ansible

<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:
    - name: upgrade all packages
      yum: name=* state=latest


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>