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

Ansible playbook使用with_items和register时无stat属性报错求助

问题原因
  • 报错来自生成RSA密钥任务的循环逻辑错误:你给with_items同时传入了{{roles}}和{{rsa.results}}两个列表,Ansible会自动将两个列表拼接后顺序遍历
  • 遍历前半部分roles列表元素时,元素只有username属性,没有stat属性,触发条件判断item.stat.exists的属性不存在报错
  • 你的debug任务仅遍历rsa.results列表,所有元素都带stat属性,所以不会报错
修复方案

Ansible 循环注册的结果中,每个rsa.results元素自带item字段,存储的是第一次执行stat任务时遍历的roles原始元素,直接遍历rsa.results即可同时拿到原始用户信息和文件状态,修改后的完整playbook如下:

- name: Check for RSA-Key existence
  stat:
    path: /opt/cert/{{item.username}}.key
  with_items: "{{roles}}"
  register: rsa
    
- name: debug
  debug:
    var: item.stat.exists
  loop: "{{rsa.results}}"
    
- name: Generate RSA-Key
  community.crypto.openssl_privatekey:
    path: /opt/cert/{{item.item.username}}.key
    size: 2048
  when: not item.stat.exists
  loop: "{{rsa.results}}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 16:00:04