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

Ansible按列表date属性排序取最新项报错如何解决

错误原因

原代码存在两个核心问题:

  • 循环逻辑完全多余:需求是对整个快照列表排序取最新值,根本不需要遍历列表每一项。加了loop配置后,每次循环拿到的item是列表里的单个字典元素,不是完整的目标列表。
  • 过滤器作用对象错误:sort是列表专属过滤器,仅能对列表类型数据生效。你把单个字典元素传给sort,还指定按date属性排序,解释器自然会报「单个对象没有可排序的date属性」的错误,和你看到的报错信息完全对应。
修正方法

去掉多余的loop配置,直接对整个sort_list列表执行排序、取最后一项的操作即可,修正后的任务代码:

- debug: msg="{{ sort_list }}"

- debug:
    msg: "{{ _latest.snap_name }}"
  vars:
    _latest: "{{ sort_list | sort(attribute='date') | last }}"

补充说明:你的date字段是YYYYMMDDHHMMSS格式的定长数字字符串,字符串字典序排序结果和实际时间先后顺序完全一致,不需要额外做日期类型转换,排序后取最后一个元素就是日期最新的条目。

如果想要更高效的写法(不需要对全列表做排序),可以直接用max过滤器取date值最大的条目:

- debug:
    msg: "{{ (sort_list | max(attribute='date')).snap_name }}"

执行后就能拿到预期结果:aaa-bbb-ccc-data-sb-20220604020004。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 06:19:29