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!",
3 Réponses :
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
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 }}"
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 !!