如何遍历Ansible Register输出提取F5 self IP名称生成独立列表
你可以通过以下两种方式实现需求,优先推荐第一种过滤器方案,实现更简洁高效:
方法1:使用Jinja2 map过滤器直接生成列表
该方案无需显式循环,一行即可完成列表提取:
- name: 提取所有self IP的name字段生成独立列表 set_fact: self_ip_names: "{{ Result.self_ips | map(attribute='name') | list }}"
上述任务执行后,生成的self_ip_names变量就是你需要的名称列表,值为["test-self-ip-1", "test-self-ip-2"]。
你可以用debug任务验证结果:
- name: 打印self IP名称列表 debug: var: self_ip_names
方法2:显式循环遍历收集(适合需要附加判断逻辑的场景)
如果后续需要在提取过程中增加过滤条件,可以用循环累加的方式实现:
# 先初始化空列表 - name: 初始化self IP名称存储列表 set_fact: self_ip_names: [] # 循环遍历每个self IP条目,提取name追加到列表 - name: 循环提取name字段 set_fact: self_ip_names: "{{ self_ip_names + [item.name] }}" loop: "{{ Result.self_ips }}"
生成的self_ip_names变量可以直接在后续任务中引用,比如遍历执行其他操作时直接指定loop: "{{ self_ip_names }}"即可。
内容的提问来源于stack exchange,提问作者Virtual Network
相关产品推荐
相关产品推荐

