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
相关产品推荐
相关产品推荐

