Note: The Listed platform will permanently shut down December 31, 2026. Your data published on Listed will still be available in your personal Standard Notes account. Learn more

Erreur 'loop' lors de l'exécution d'un playbook Ansible

ERROR! The field 'loop' is supposed to be a string type, however the incoming data structure is a <class 'ansible.parsing.yaml.objects.AnsibleSequence'>

Cette erreur est dûe à une vieille version d'Ansible (< 2.5). Le playbook utilise un mot clé d'Ansible dont les paramètres n'existent que dans une version plus récente. Par exemple, un playbook destiné à une version 20.04 d'Ubuntu mais exécutée dans une Ubuntu 16.04 peut faire surgir l'erreur.

Pour contourner le souci, 2 solutions.

1. Utilisation d'un autre mot-clé

On peut utiliser le mot clé with_items. Il faudra remplacer quelque chose qui ressemble à ceci :

tasks:
    - name: Install Prerequisites
      apt: name={{ item }} update_cache=yes state=latest force_apt_get=yes
      loop: [ 'aptitude' ]

Par ceci :

tasks:
    - name: Install Prerequisites
      apt: name={{ item }} update_cache=yes state=latest force_apt_get=yes
      with_items: [ 'aptitude' ]

2. Installer une version plus récente d'Ansible via pip

Pour désinstaller la version d'Ansible issues des paquets d'Ubuntu :

sudo apt remove --purge ansible
sudo autoremove

Pour installer une version plus récente d'Ansible :

sudo apt install python3-pip
pip3 install ansible

Pour vérifier la version d'Ansible :

ansible --version

L'exemple ci-dessus devient :

tasks:
    - name: Install Prerequisites
      apt:
        name: [ 'aptitude' ]
        update_cache: yes
        state: latest

Moralité : toujours utiliser la version pip d'Ansible.


You'll only receive email when they publish something new.

More from TheSubmarine
All posts