多主机配不同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
相关产品推荐
相关产品推荐

