如何移除Ansible变量输出的数组括号,生成REST API可用的逗号分隔字符串
解决方法
你通过json_query提取到的nickname结果是列表类型,直接使用Ansible内置的join过滤器指定逗号作为分隔符,即可将列表转换为无括号的逗号分隔字符串。
修改后的Task配置
将原有打印任务的过滤器链末尾追加join(',')即可:
tasks: - name: print comma separated nicknames debug: msg: "{{ item.portnames | community.general.json_query('[*].nickname') | join(',') }}" loop: "{{ msg }}"
补充说明
如果需要同时关联输出对应主机的name值,方便后续分组匹配调用REST API,可以调整输出格式:
tasks: - name: print host name and matched nicknames debug: msg: "{{ item.name }}: {{ item.portnames | community.general.json_query('[*].nickname') | join(',') }}" loop: "{{ msg }}"
执行后输出示例:
ok: [localhost] => (item={'name': 'abcdsto1', ...}) => { "msg": "abcdsto1: abcdsto1p1,abcdsto1p2,abcdsto1p3,abcdsto1p4" }
内容的提问来源于stack exchange,提问作者Linux Admin
相关产品推荐
相关产品推荐

