如何调整Ansible输出格式,将AWS EC2实例标签按名称-描述配对展示
解决方案
你可以直接使用Ansible内置的zip过滤器实现两个同顺序列表的按位置配对,不需要额外构建字典,修改print Instance Info任务即可:
- name: print Instance Info debug: msg: "{{ item.0 }} - {{ item.1 }}" loop: "{{ (ec2_info | json_query(name_tag)) | zip(ec2_info | json_query(description_tag)) | list }}" vars: name_tag: "instances[*].tags.Name" description_tag: "instances[*].tags.Description"
实现逻辑
zip过滤器会将两个等长的列表按索引位置一一匹配,生成格式为[[name1, description1], [name2, description2]...]的嵌套列表,末尾加| list是为了兼容高版本Ansible中zip返回迭代器的特性- 循环遍历配对后的列表,直接拼接
item.0(对应name值)和item.1(对应description值)即可得到你需要的配对输出格式
可选优化
如果部分实例可能没有Description标签,可以在json_query中添加默认值避免输出空值:
description_tag: "instances[*].tags.Description || '未填写描述'"
内容的提问来源于stack exchange,提问作者Brandon DeYoung
相关产品推荐
相关产品推荐

