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

Ansible template复制JSON文件失败,请求排查文件找不到问题

问题:Ansible template模块找不到JSON文件导致Jenkins执行失败

Jenkins错误日志

TASK [datadog-dashboard : Import Datadog Dashboard in main] ********************
16:54:24  included: /home/jenkins/agent/workspace/5052/non_production/monitoring-as-code/src/roles/datadog-dashboard/tasks/Import.yaml for localhost
16:54:24  
16:54:24  TASK [datadog-dashboard : Copying Dashboard json file] *************************
16:54:24  fatal: [localhost]: FAILED! => {"changed": false, "msg": "Could not find or access 'src/roles/datadog-dashboard/templates/datadog-dashboard/non_production/NonProd.json'\nSearched in:\n\t/home/jenkins/agent/workspace/5052/non_production/monitoring-as-code/src/roles/datadog-dashboard/templates/src/roles/datadog-dashboard/templates/datadog-dashboard/non_production/NonProd.json\n\t/home/jenkins/agent/workspace/5052/non_production/monitoring-as-code/src/roles/datadog-dashboard/src/roles/datadog-dashboard/templates/datadog-dashboard/non_production/NonProd.json\n\t/home/jenkins/agent/workspace/5052/non_production/monitoring-as-code/src/roles/datadog-dashboard/tasks/templates/src/roles/datadog-dashboard/templates/datadog-dashboard/non_production/NonProd.json\n\t/home/jenkins/agent/workspace/5052/non_production/monitoring-as-code/src/roles/datadog-dashboard/tasks/src/roles/datadog-dashboard/templates/datadog-dashboard/non_production/NonProd.json\n\t/home/jenkins/agent/workspace/5052/non_production/monitoring-as-code/src/templates/src/roles/datadog-dashboard/templates/datadog-dashboard/non_production/NonProd.json\n\t/home/jenkins/agent/workspace/5052/non_production/monitoring-as-code/src/src/roles/datadog-dashboard/templates/datadog-dashboard/non_production/NonProd.json on the Ansible Controller.\nIf you are using a module and expect the file to exist on the remote, see the remote_src option"}

对应的Ansible代码片段

- name: Copying Dashboard json file
  template:
    src: src/roles/datadog-dashboard/templates/datadog-dashboard/{{ application_env }}/NonProd.json
    dest: /tmp/5052-dash.json
    mode: '0644'

问题原因与解决方法

  • 问题根源:Ansible的template模块会自动在当前角色的templates目录、playbook所在目录的templates目录下搜索文件。你写的src是完整的相对路径,导致Ansible将该路径拼接到默认搜索路径后,出现了重复的路径(比如/templates/src/roles/...),最终找不到文件。

  • 修正代码:由于任务位于datadog-dashboard角色的tasks中,src只需填写相对于角色templates目录的路径即可。修正后的代码如下:

- name: Copying Dashboard json file
  template:
    src: datadog-dashboard/{{ application_env }}/NonProd.json
    dest: /tmp/5052-dash.json
    mode: '0644'
  • 路径验证:可在Jenkins工作目录下执行以下命令,确认文件实际存在(替换{{ application_env }}为实际值,比如non_production):
ls /home/jenkins/agent/workspace/5052/non_production/monitoring-as-code/src/roles/datadog-dashboard/templates/datadog-dashboard/non_production/NonProd.json

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 19:45:49