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

如何将Ansible获取的NetApp ONTAP证书结果转为指定表头表格?

实现NetApp证书信息转置为指定表头的表格

完全可行,以下是修改后的Ansible剧本,能够汇总所有集群的证书数据,并输出你需要的表格格式(支持控制台直接显示Markdown表格,也可选生成CSV报告):

---
- name: NetApp证书过期报告
  hosts: localhost
  gather_facts: no
  collections:
    - netapp.ontap

  vars:
    pp_ontap_clusters:
      - cls1
      - cls2
      - cls3
      - cls4
      - cls5
      - cls6
      - cls7
    all_certificates: []

  tasks:
  - name: 获取各ONTAP集群的证书信息
    netapp.ontap.na_ontap_rest_info:
      hostname: "{{ item }}"
      username: "{{ lookup('env', 'ontap_admin_usr') }}"
      password: "{{ lookup('env', 'ontap_admin_pwd') }}"
      use_rest: always
      https: true
      validate_certs: false
      gather_subset:
        - security/certificates
      fields:
        - 'common_name'
        - 'serial_number'
        - 'ca'
        - 'type'
        - 'expiry_time'
        - 'scope'
      parameters:
        type: server
    loop: "{{ pp_ontap_clusters }}"
    register: cert_results

  - name: 汇总所有证书记录(附带集群标识)
    set_fact:
      all_certificates: "{{ all_certificates + item.ontap_info['security/certificates'].records | json_query('[].{cluster: \"{{ item.item }}\", common_name: common_name, serial_number: serial_number, ca: ca, type: type, expiry_time: expiry_time, scope: scope}') }}"
    loop: "{{ cert_results.results }}"

  - name: 在控制台输出Markdown格式证书表格
    debug:
      msg: |
        | 集群名称 | common_name | serial_number | ca | type | expiry_time | scope |
        |----------|-------------|---------------|----|------|-------------|-------|
        {% for cert in all_certificates %}
        | {{ cert.cluster }} | {{ cert.common_name }} | {{ cert.serial_number }} | {{ cert.ca }} | {{ cert.type }} | {{ cert.expiry_time }} | {{ cert.scope }} |
        {% endfor %}

  - name: 生成CSV格式证书报告(可选)
    copy:
      content: |
        集群名称,common_name,serial_number,ca,type,expiry_time,scope
        {% for cert in all_certificates %}
        {{ cert.cluster }},{{ cert.common_name }},{{ cert.serial_number }},{{ cert.ca }},{{ cert.type }},{{ cert.expiry_time }},{{ cert.scope }}
        {% endfor %}
      dest: ./netapp_cert_report.csv

关键说明

  1. 数据汇总:通过set_fact任务把每个集群返回的证书记录合并成一个统一列表,同时添加了集群名称字段,方便区分不同集群的证书(如果不需要可以去掉该字段)。
  2. Markdown表格输出:利用Jinja2模板遍历汇总后的列表,直接在控制台输出标准Markdown表格,复制就能用。
  3. CSV报告生成:可选任务,生成CSV文件,适合用Excel、Numbers等工具打开分析。

如果不需要集群名称,只保留你指定的6个字段,修改json_query部分即可:

'[].{common_name: common_name, serial_number: serial_number, ca: ca, type: type, expiry_time: expiry_time, scope: scope}'

同时调整表格表头和CSV的第一行即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 20:59:52