Skip to content

Aide-mémoire Ansible

Ansible est un outil émergent d’automatisation des opérations développé en Python. Il combine les avantages de nombreux outils d’exploitation (puppet, cfengine, chef, func, fabric) et permet des fonctions telles que la configuration de systèmes par lots, le déploiement de programmes par lots et l’exécution de commandes par lots.

Mise en route

Hôtes et Groupes (Hosts and Groups)

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

[example]
192.0.2.101
192.0.2.102

Exécution d’un Playbook

$ ansible-playbook playbook.yml

Tâches (Tasks)

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

Inclusions (Includes)

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

Déclencheurs (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"

Rôles (Roles)

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

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

Gestion des erreurs

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

  ignore_errors: yes

  changed_when: "result.rc != 2"

Variables d’environnement

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