我开始用ansible编写我的第一本严肃的剧本。
我想做的是为每个主机指定不同的remote_user
值。我可以通过CLI remote_user
选项在ansible.cfg中设置-u
,甚至可以在播放变量中设置---
- name: install dependencies
hosts: all
sudo: yes
vars:
remote_user: username
,如下所示:
group_vars/all
但是在主机或组级别设置var(这对我的方法最有意义)将不起作用。例如,将此文件设为---
remote_user: username
会导致“身份验证失败”致命错误:
{{1}}
我错过了什么?
答案 0 :(得分:1)
您正在做的事情似乎没有记录。具体来说,你有这个:
vars:
remote_user: username
根据documentation,它应该是这样的:
remote_user: username
当你以错误的方式做错时它碰巧工作的事实是无关紧要的。有一些副作用使它在这种情况下起作用,但当然它不会在另一种情况下起作用,并且在不同的Ansible版本中它可能表现不同。
要以每个主机中的其他用户身份登录,通常的方法是在inventory中指定ansible_ssh_user
。这是否是可以在host_vars
或group_vars
中覆盖的变量,我不确定。另请参阅issue 4688,了解ansible_ssh_user
和remote_user
如何相互覆盖的信息。