Quick References #
Setup #
Installation #
yum install ansible
apt install ansible
pip3 install ansible
# for python2 - default installation
pip install ansible
remote machine should have ‘python’ - ‘gather_facts: False’ or ‘gather_facts: no’ otherwise
Remove #
rm -rf $HOME/.ansible
rm -rf $HOME/.ansible.cfg
sudo rm -rf /usr/local/lib/python2.7/dist-packages/ansible
sudo rm -rf /usr/local/lib/python2.7/dist-packages/ansible-2.5.4.dist-info
sudo rm -rf /usr/local/bin/ansible
sudo rm -rf /usr/local/bin/ansible-config
sudo rm -rf /usr/local/bin/ansible-connection
sudo rm -rf /usr/local/bin/ansible-console
sudo rm -rf /usr/local/bin/ansible-doc
sudo rm -rf /usr/local/bin/ansible-galaxy
sudo rm -rf /usr/local/bin/ansible-inventory
sudo rm -rf /usr/local/bin/ansible-playbook
sudo rm -rf /usr/local/bin/ansible-pull
sudo rm -rf /usr/local/bin/ansible-vault
sudo rm -rf /usr/lib/python2.7/dist-packages/ansible
sudo rm -rf /usr/local/lib/python2.7/dist-packages/ansible
Configuration #
ansible configuration places #
path variable $Ansible_Config ~/.ansible.cfg /etc/ansible/ansible.cfg
ansible-config view
# list of possible environment variables
ansible-config dump
configuration for external roles #
filename: ~/.ansible.cfg
[defaults]
roles_path = ~/repos/project1/roles:~/repos/project2/roles
check configuration #
ansible-config view
inventory #
ini file #
# example cfg file
[web]
host1
host2 ansible_port=222 # defined inline, interpreted as an integer
[web:vars]
http_port=8080 # all members of 'web' will inherit these
myvar=23 # defined in a :vars section, interpreted as a string
Usages #
simple file for creating one folder #
- hosts: all
tasks:
- name: Creates directory
file:
path: ~/spark-submit/trafficsigns
state: directory
mode: 0775
- name: copy all files from folder
copy:
src: "/home/projects/ubs/current-task/nodes/ansible/files"
dest: ~/spark-submit/trafficsigns
mode: 0775
- debug: msg='folder was created for host {{ ansible_host }}'
loop example #
- name: scripts {{ item }}
template:
mode: 0777
src: "templates/{{ item }}"
dest: "{{ root_folder }}/{{ item }}"
loop:
- "start-all.sh"
- "status.sh"
- "stop-all.sh"
execute ansible locally, local execution #
# --extra-vars="mapr_stream_path={{ some_variable_from_previous_files }}/some-argument" \
ansible localhost \
--extra-vars="deploy_application=1" \
--extra-vars=@group_vars/all/vars/all.yml \
--extra-vars=@group_vars/ubs-staging/vars/ubs-staging.yml \
-m include_role \
-a name="roles/labeler"
Playbook #
execute ansible-playbook with external paramters #
ansible-playbook -i inventory.ini playbook.yml --extra-vars "$*"
with path to file for external parameters, additional variables from external file
ansible-playbook -i inventory.ini playbook.yml --extra-vars @/path/to/var.properties
ansible-playbook playbook.yml --extra-vars=@/path/to/var.properties
Miscellaneous #
check is it working, ad-hoc command #
ansible remote* -i inventory.ini -m "ping"
ansible remote* -i inventory.ini --module-name "ping"
ansible remote* -i inventory.ini -a "hostname"
Debug #
export ANSIBLE_STRATEGY=debug
# revert it afterwards ( avoid "ERROR! Invalid play strategy specified: "):
# export ANSIBLE_STRATEGY=linear
print variables
task.args
task.args['src']
vars()
change variables
del(task.args['src'])
task.args['src']="/new path to file"
manage palying