Ansible - les loops

Dans Ansible, {{ item }} est une syntaxe utilisée dans les expressions Jinja2 pour référencer la valeur de l’élément en cours lors d’une itération. Quand une boucle loop est utilisé, l’élément item fait référence à l’élément actuel dans la boucle.

Utilisation des loops

Ecrire dans un fichier

Pour ajouter plusieurs lignes à un fichier, le loop permet de lister les lignes à ajouter au fur et à mesure.
Le insertafter: EOF correspond à un >>, c’est à dire que l’ajout se fait à la suite, sans écraser le contenu actuel (ce qui ce passe avec un >).

Le script ansible ci-dessous a le même effet que :

# echo "" >> /mon/chemin/CONFIG_FILE.conf

Script Ansible

---
- name: Ajouter des lignes dans un fichier
hosts: vos_hôtes
become: yes

tasks:
- name: Ajouter des lignes dans un fichier
lineinfile:
path: /mon/chemin/CONFIG_FILE.conf
line: "{{ item }}"
insertafter: EOF
loop:
- 'set_maVar1 25 38 456895'
- 'set_maVar2 35 59 589642'
- 'set_maVar3 55 00 235678'

Changer des droits

Le loop permet à file d’aller chercher les chemins au fur et à mesure afin de changer le propriétaire et le groupe.

- name: Changer le propriétaire et les permissions de répertoires
hosts: vos_hôtes
become: yes

tasks:
- name: Changer le propriétaire et les permissions de répertoires
file:
path: "{{ item.path }}"
owner: john
group: admin
recurse: yes
loop:
- { path: '/mon/chemin/dossier01' }
- { path: '/mon/chemin/dossier42' }
- { path: '/mon/chemin/test/travail/*' }

Si les droits et groupes sont différents, il est possible de les mettre dans des variables :

- name: Changer le propriétaire et les permissions de répertoires
file:
path: "{{ item.path }}"
state: directory
owner: "{{ item.owner }}"
group: "{{ item.group }}"
mode: "{{ item.mode }}"
loop:
- { path: '/mon/chemin/dossier01', owner: 'john', group: 'john', mode: '0777' }
- { path: '/mon/chemin/dossier02', owner: 'chat', group: 'chat', mode: '0755' }
- { path: '/mon/chemin/dossier03', owner: 'root', group: 'root', mode: '0750' }
- { path: '/mon/chemin/dossier42', owner: 'Arty', group: 'Arty', mode: '0700' }

Documentation

https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_loops.html

> Partager <