1
votes

LA VARIABLE N'EST PAS DÉFINIE lors de la tentative d'enregistrement de la sortie dans le playbook

J'essaie d'enregistrer une variable avec la sortie d'une requête d'un pool F5 et j'obtiens cette erreur:

---
- name: GRAB F5 FACTS
  hosts: f5
  connection: local
  gather_facts: no
  tasks:
    - name: Collect BIG-IP facts
      bigip_device_facts:
        gather_subset: ltm-pools
        provider: "{{ prov }}"
      register: bigip_device_facts

    - name: FACTS OUTPUT
      debug:
        var: "{{ item.members | rejectattr('state', 'match', '^present$') | map(attribute='name') | list }}"
      register: jkout
      with_items: "{{ bigip_device_facts.ltm_pools }}" 
      when: item.full_path  == "/Common/mypool"

    - name: Set a variable
      debug:
        msg: "jkvar={{ jkout }}"

Qu'est-ce que je fais mal? Toute aide appréciée. Merci!

"<type 'list'>": "VARIABLE IS NOT DEFINED!", 


0 commentaires

3 Réponses :


4
votes

Vous utilisez le module debug: avec l'option var: et cela attend une variable, pas un modèle jinja2.

Alors changez-le en:

debug:
  msg: "{{ item.members }}"

ou

debug:
  var: item.members


0 commentaires

0
votes

Comme l'a dit @dgw, le problème vient de l'option var du module debug .

https://docs.ansible.com/ansible/latest/modules/debug_module.html#parameters

Ce playbooks fonctionne:

  - name: test rejectattr
    hosts: localhost
    gather_facts: no

    vars:
      members:
        - { name: "one", state: "present" }
        - { name: "two", state: "absent" }
        - { name: "three", state: "present" }

    tasks:

      - name: FACTS OUTPUT
        debug:
          msg: "{{ members | rejectattr('state', 'match', '^present$') | map(attribute='name') | list }}"


0 commentaires

0
votes

Merci pour vos réponses. Je vais enquêter plus avant. En dehors de cela, je pense avoir été en mesure de le résoudre d'une autre manière.

    - name: FACTS OUTPUT
  set_fact:
    listado: "{{ item.members | rejectattr('state', 'match', '^present$') | map(attribute='name') | list }}"
  with_items: "{{ bigip_device_facts.ltm_pools }}"
  when: item.full_path  == "/Common/mypool"
- debug: msg={{ listado }}
  register: jkout

- name: Set a variable
  debug:
    msg: "jkvar={{ jkout }}"

Est-ce une bonne façon de le faire? Merci !!


0 commentaires