我正在尝试将输出中的变量注册到F5池的查询中,并且出现此错误:
"<type 'list'>": "VARIABLE IS NOT DEFINED!",
我做错了什么? 任何帮助表示赞赏。 谢谢!
---
- 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 }}"
答案 0 :(得分:1)
您正在使用带有选项debug:
的{{1}}模块,这需要一个变量,而不是jinja2模板。
因此将其更改为:
var:
或
debug:
var: item.members
答案 1 :(得分:0)
就像@dgw所说的那样,问题出在var
模块的debug
选项上。
https://docs.ansible.com/ansible/latest/modules/debug_module.html#parameters
这本剧本有效:
- 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 }}"
答案 2 :(得分:0)
感谢您的回复。我会进一步调查。 除此之外,我认为我已经能够用另一种方式解决它。
- 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 }}"
这是正确的方法吗? 谢谢!