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

Ansible循环遍历YAML文件提示job_msg变量未定义如何解决

错误原因

你当前使用的fileglob查询仅返回匹配的文件路径字符串,没有读取并解析YAML文件内容为变量,且实际存储参数的job字段是每个文件内的嵌套数组,因此直接遍历路径字符串无法获取到job_msg变量。

调整方案

修改循环逻辑,增加文件内容读取、YAML解析、字段提取、数组合并的步骤,调整后的任务配置如下:

---
# task file

- name: "Print"
  ansible.builtin.debug:
    msg: "{{ item.job_msg | mandatory }} \n
          {{ item.job_msg2 | mandatory }}"
  loop: "{{ q('fileglob', 'tower_job_templates/*') | map('file') | map('from_yaml') | map(attribute='job') | flatten }}"

逻辑说明

  • q('fileglob', 'tower_job_templates/*'):匹配目标目录下所有文件,返回文件路径列表
  • map('file'):依次读取每个路径对应的文件原始内容
  • map('from_yaml'):将YAML格式的文件内容解析为Ansible可识别的字典结构
  • map(attribute='job'):提取每个文件字典内的job参数数组
  • flatten:将所有文件的job数组合并为一维列表,作为循环迭代对象

调整后即可正常遍历所有YAML文件内定义的job项,读取对应变量。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 00:36:07