You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将多主机v_data合并为单个JSON并转换为表格

解决Ansible多主机数据合并为统一JSON的方案

核心实现思路

借助Ansible的hostvars变量遍历目标主机组,提取每台主机的inventory_hostname和对应v_data,将其整合成统一结构的数据集,最后输出为标准JSON文件,方便后续转CSV或表格。

具体任务代码示例

1. 聚合多主机数据

添加以下Ansible任务,将所有目标主机的v_data按主机名归类:

- name: 合并所有主机的v_data
  set_fact:
    merged_data: "{{ merged_data | default([]) + [{'hostname': item, 'data': hostvars[item]['v_data']}] }}"
  delegate_to: localhost
  run_once: true
  loop: "{{ groups['your_target_group'] }}"

注:把your_target_group替换为你实际用到的主机组名称,比如all或自定义组

2. 输出为JSON文件

将聚合后的数据写入本地JSON文件:

- name: 生成统一JSON文件
  copy:
    content: "{{ merged_data | to_nice_json(indent=2) }}"
    dest: ./hosts_merged_data.json
  delegate_to: localhost
  run_once: true

自定义格式调整

如果你的v_data本身是表格行结构(比如列表型字典,每元素对应一行数据),可以直接给每行数据追加主机名字段,后续转CSV更便捷:

- name: 合并为带主机名的行数据
  set_fact:
    merged_data: "{{ merged_data | default([]) + hostvars[item]['v_data'] | map('combine', {'hostname': item}) | list }}"
  delegate_to: localhost
  run_once: true
  loop: "{{ groups['your_target_group'] }}"

执行完成后,hosts_merged_data.json就是符合要求的统一格式数据,可直接用jq、Python脚本等工具转换为CSV或表格格式。

内容的提问来源于stack exchange,提问作者mahen1812

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 17:07:03