Skip to content

Cheat Sheet Ansible

Ansible este un instrument emergent de automatizare a operațiunilor IT, dezvoltat pe baza Python. Combină avantajele multor instrumente de gestionare (puppet, cfengine, chef, func, fabric) și implementează funcții precum configurarea sistemelor în lot, implementarea programelor în lot și executarea comenzilor în lot.

Primii pași

Gazde și grupuri (Hosts and Groups)

$ sudo mkdir /etc/ansible
$ sudo vim /etc/ansible/hosts

[example]
192.0.2.101
192.0.2.102

Executarea unui Playbook

$ ansible-playbook playbook.yml

Sarcini (Tasks)

- hosts: all
  user: root
  sudo: no
  vars:
    aaa: bbb
  tasks:
    - ...
  handlers:
    - ...

Includeri (Includes)

tasks:
  - include: db.yml
handlers:
  - include: db.yml user=timmy

Declanșatori (Triggers)

handlers:
  - name: start apache2
    action: service name=apache2 state=started

tasks:
  - name: install apache
    action: apt pkg=apache2 state=latest
    notify:
      - start apache2

Variabile

- 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"

Roluri (Roles)

- host: xxx
  roles:
    - db
    - { role:ruby, sudo_user:$user }
    - web

# Utilizări:
# roles/db/tasks/*.yml
# roles/db/handlers/*.yml

Gestionarea erorilor

- name: my task
  command: ...
  register: result
  failed_when: "'FAILED' in result.stderr"

  ignore_errors: yes

  changed_when: "result.rc != 2"

Variabile de mediu

vars:
  local_home: "{{ lookup('env','HOME') }}"