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

Ansible新手求助:如何在Playbook输出中显示copy模块content计算值

解决Ansible中无法捕获copy模块content内容的问题

copy模块的register返回结果里不包含content字段,所以你无法通过csv_content变量获取到生成的CSV内容。

直接将CSV内容定义为独立变量,即可同时用于文件生成和调试输出:

vars:
  current_date: "{{ '%Y-%m-%d' | strftime }}"
  # 定义CSV内容变量,把原copy模块中的模板逻辑迁移过来
  csv_data: |
    {% for host in hosts_list %}
    {% set idm=host.inventory_hostname.split('_')[0].split('-')[1] %}
    {% set idm_padded = '%03d' % idm|int %}
    {{ [idm_padded] | map('trim') | join(';') }}
    {% endfor %}
  hosts_list: "{{ ansible_play_hosts | map('extract', hostvars) | list }}"

tasks:
  - name: Dump results to /tmp/myfile.csv
    copy:
      dest: /tmp/mycsv_{{ current_date }}.csv
      content: "{{ csv_data }}"
    run_once: yes

  - ansible.builtin.debug:
      msg: "{{ csv_data }}"

关键调整说明

  • 将原copy模块content内的模板逻辑提取为全局变量csv_data,既可以传递给copy模块生成文件,也能直接通过debug模块输出内容。
  • 复用current_date变量替代重复的strftime过滤器调用,简化代码。
  • 将hosts_list移至全局vars,避免任务内重复定义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 00:32:52