Skip to content

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') }}"