Skip to content

Hoja de Referencia de Ansible

Ansible es una herramienta de automatización de operaciones emergente desarrollada en Python. Combina las ventajas de muchas herramientas de operaciones (puppet, cfengine, chef, func, fabric) y permite funciones como la configuración de sistemas en bloque, el despliegue de programas en bloque y la ejecución de comandos en bloque.

Introducción

Hosts y Grupos

$ sudo mkdir /etc/ansible
$ sudo vims /etc/ansible/hosts

[example]
192.0.2.101
192.0.2.102

Ejecutar Playbook

$ ansible-playbook playbook.yml

Tareas (Tasks)

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

Inclusiones (Includes)

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

Disparadores (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

# Usos:
# roles/db/tasks/*.yml
# roles/db/handlers/*.yml

Manejo de Errores

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

  ignore_errors: yes

  changed_when: "result.rc != 2"

Variables de Entorno

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