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

多主机配不同SSH密钥时AWX模板使用问题及自定义凭据报错

解决AWX多主机不同SSH密钥的凭据配置问题

问题本质

你碰到的userlogin和my_ssh_key_file未定义报错,核心是自定义凭据的注入规则没和主机变量正确绑定,或者全局清单变量的引用逻辑不对。

正确配置步骤

1. 重构自定义凭据类型

  • 输入字段设置:创建自定义凭据时,输入字段直接用username(字符串类型)和ssh_key(多行文本类型),别用userlogin这类自定义命名,贴合Ansible原生变量能减少混淆。
  • 注入器规则配置:必须把凭据变量注入到主机级专属变量,而非全局或模板级。注入器的extra_vars写:
    ansible_user: "{{ username }}"
    ansible_ssh_private_key_file: "/tmp/{{ inventory_hostname }}_ssh_key"
    
    再添加file类型的注入规则,把私钥写入对应主机的临时文件:
    path: "/tmp/{{ inventory_hostname }}_ssh_key"
    content: "{{ ssh_key }}"
    owner: awx
    mode: 0600
    

2. 主机与凭据绑定

  • 放弃全局清单变量的方式,给每台主机单独绑定对应的自定义凭据:进入主机详情页的「凭据」标签,关联你为该主机创建的专属凭据。这样AWX会自动把凭据变量注入到这台主机的私有变量空间。

3. 模板调整

  • 模板里不要添加任何机器凭据,确保AWX优先使用主机绑定的自定义凭据变量。作业执行时,AWX会为每台主机生成唯一的临时密钥文件,自动替换ansible_ssh_private_key_file的值,同时用凭据里的username作为ansible_user。

排查要点

  • 检查注入器里是否用{{ inventory_hostname }}区分密钥文件名,避免多主机间文件覆盖。
  • 确认每台主机都正确关联了对应的自定义凭据,没有漏绑。
  • 作业执行时开启「显示详细输出」,查看extra_vars里是否正确包含ansible_user和ansible_ssh_private_key_file变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 00:37:41