我可以在 host_vars 或 group_vars 中设置 remote_user 吗?
Can I set remote_user in host_vars or group_vars?
我开始用 ansible 编写我的第一本正式剧本。
我想做的是为每个主机指定不同的 remote_user
值。我可以通过 CLI -u
选项甚至在播放变量中在 ansible.cfg 中设置 remote_user
,如下所示:
---
- name: install dependencies
hosts: all
sudo: yes
vars:
remote_user: username
但是在主机或组级别设置 var(这对我的方法最有意义)将不起作用。例如,将此文件设置为 group_vars/all
会给我一个 "Authentication failure" 致命错误:
---
remote_user: username
我错过了什么?
您所做的似乎没有记录。具体来说,你有这个:
vars:
remote_user: username
当时,根据documentation,应该是这样的:
remote_user: username
当你以错误的方式做时它碰巧起作用的事实是无关紧要的。有一些副作用使它在那种情况下工作,但当然在另一种情况下它不会工作,并且它可能在不同的 Ansible 版本中表现不同。
要在每个主机中以不同的用户身份登录,通常的方法是在 inventory. Whether this is a variable that can be overridden in host_vars
or group_vars
I'm not certain. See also issue 4688 中指定 ansible_ssh_user
以获取有关 ansible_ssh_user
和 remote_user
如何可能的信息互相覆盖。
在您的组或主机变量中添加一个名称类似于 playbook_username
的新变量,然后在您的剧本中将 remote_user 更改为这样的名称 - remote_user: "{{ playbook_username }}"
通常主机变量似乎不会覆盖 remote_user,但此变通方法效果很好
我开始用 ansible 编写我的第一本正式剧本。
我想做的是为每个主机指定不同的 remote_user
值。我可以通过 CLI -u
选项甚至在播放变量中在 ansible.cfg 中设置 remote_user
,如下所示:
---
- name: install dependencies
hosts: all
sudo: yes
vars:
remote_user: username
但是在主机或组级别设置 var(这对我的方法最有意义)将不起作用。例如,将此文件设置为 group_vars/all
会给我一个 "Authentication failure" 致命错误:
---
remote_user: username
我错过了什么?
您所做的似乎没有记录。具体来说,你有这个:
vars:
remote_user: username
当时,根据documentation,应该是这样的:
remote_user: username
当你以错误的方式做时它碰巧起作用的事实是无关紧要的。有一些副作用使它在那种情况下工作,但当然在另一种情况下它不会工作,并且它可能在不同的 Ansible 版本中表现不同。
要在每个主机中以不同的用户身份登录,通常的方法是在 inventory. Whether this is a variable that can be overridden in host_vars
or group_vars
I'm not certain. See also issue 4688 中指定 ansible_ssh_user
以获取有关 ansible_ssh_user
和 remote_user
如何可能的信息互相覆盖。
在您的组或主机变量中添加一个名称类似于 playbook_username
的新变量,然后在您的剧本中将 remote_user 更改为这样的名称 - remote_user: "{{ playbook_username }}"
通常主机变量似乎不会覆盖 remote_user,但此变通方法效果很好