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

如何用Ansible无需Python脚本获取文件系统与挂载点并生成CSV

无需Python的Ansible生成XFS文件系统CSV方案

直接用Ansible原生模块结合系统命令就能搞定,完全不依赖Python,具体实现如下:

完整Playbook示例

- name: 生成XFS文件系统挂载信息CSV
  hosts: all
  gather_facts: no  # 关闭事实收集,避免触发Python依赖
  tasks:
    - name: 执行df命令获取XFS文件系统数据
      command: df --type=xfs -h --output=source,target
      register: df_output

    - name: 处理输出并生成CSV文件
      copy:
        content: |
          文件系统,挂载点
          {% for line in df_output.stdout_lines[1:] %}
          {{ line.split()[0] }},{{ line.split()[1] }}
          {% endfor %}
        dest: /tmp/xfs_mounts.csv
        mode: '0644'

关键细节解释

  • 关闭事实收集:gather_facts: no是核心,因为Ansible默认的事实收集需要Python环境,关掉之后就完全不依赖了。
  • 调用系统df命令:用command模块直接执行目标机器上的df命令,指定输出XFS文件系统的源路径和挂载点,结果存在df_output变量里。
  • Jinja2模板处理输出:
    • 跳过stdout_lines的第一行(也就是df自带的表头),从第二行开始遍历
    • 把每行内容按空格分割,取第一列(文件系统)和第二列(挂载点),用逗号拼成CSV格式
    • 手动加了CSV的表头,保证输出格式规范

可选:汇总所有服务器的CSV到控制节点

如果需要把所有机器的CSV文件集中到本地,可以加个fetch模块:

- name: 将CSV拉取到控制节点
      fetch:
        src: /tmp/xfs_mounts.csv
        dest: ./server_csvs/{{ inventory_hostname }}_xfs_mounts.csv
        flat: yes

执行后,控制节点的server_csvs目录下会生成每个服务器对应的CSV文件,文件名里包含主机名,方便区分查看。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 18:31:43