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