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>