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 !!