Ansible Cheat Sheet
Ansible is an emerging automation tool developed based on Python. It combines the advantages of many IT automation tools (puppet, cfengine, chef, func, fabric) to achieve batch system configuration, batch program deployment, and batch command execution.
Getting Started
Hosts and Groups
$ sudo mkdir /etc/ansible
$ sudo house /etc/ansible/hosts
[example]
192.0.2.101
192.0.2.102
Execute Playbook
$ ansible-playbook playbook.yml
Tasks
- hosts: all
user: root
sudo: no
vars:
aaa: bbb
tasks:
- ...
handlers:
- ...
Include
tasks:
- include: db.yml
handlers:
- include: db.yml user=timmy
Triggers
handlers:
- name: start apache2
action: service name=apache2 state=started
tasks:
- name: install apache
action: apt pkg=apache2 state=latest
notify:
- start apache2
Variables
- host: lol
vars_files:
- vars.yml
vars:
project_root: /etc/xyz
tasks:
- name: Create the SSH directory.
file: state=directory path=${project_root}/home/.ssh/
only_if: "$vm == 0"
Roles
- host: xxx
roles:
- db
- { role:ruby, sudo_user:$user }
- web
# Uses:
# roles/db/tasks/*.yml
# roles/db/handlers/*.yml
Error Handling
- name: my task
command: ...
register: result
failed_when: "'FAILED' in result.stderr"
ignore_errors: yes
changed_when: "result.rc != 2"
Environment Variables
vars:
local_home: "{{ lookup('env','HOME') }}"