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

Ansible循环任务条件判断失效求助:仅为含ssh_pubkey用户追加公钥

问题分析

从错误日志能看到,实际执行的判断条件是item.username.ssh_pubkey is defined,但你的role_users_user_details变量里,每个用户条目的ssh_pubkey是直接属于item的属性(并非item.username的子属性),这就导致条件永远不成立,任务被错误跳过。

解决方案

1. 修正条件表达式与缩进

确保when是任务级属性(和loop缩进级别一致),并且条件正确指向item的ssh_pubkey字段:

- name: Append user pubkey in authorized_keys
  ansible.builtin.lineinfile:
    dest: /home/{{ item.username }}/.ssh/authorized_keys
    line: "{{ item.ssh_pubkey }}"
    state: present
    insertafter: EOF
  loop: "{{ role_users_user_details }}"
  when: item.ssh_pubkey is defined

2. 可选:增强条件判断(排除空值)

如果需要避免ssh_pubkey存在但为空字符串的情况,可以把条件改成:

when: item.ssh_pubkey is defined and item.ssh_pubkey | trim | length > 0

3. 确认变量结构正确性

你的vars.yml里的变量结构是正确的,ssh_pubkey直接嵌套在用户条目下,无需修改:

role_users_user_details:
  - username: "{{ role_users_remote_username }}"
    group: "{{ role_users_remote_username }}"
    ssh_pubkey: "test-entry"
  - username: ansible_usr
    group: ansible_usr
验证效果

修正后,带有ssh_pubkey的用户条目会执行追加公钥任务,无该字段的用户条目会被跳过,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 20:32:33