Ansible:库存中 ansible_user vs 剧本中 remote_user

Ansible: ansible_user in inventory vs remote_user in playbook

我正在尝试 运行 使用我在控制机器上登录的帐户以外的帐户对服务器执行 Ansible 剧本。我试图根据 Inventory:

上的文档在清单文件中指定一个 ansible_user
[srv1]
192.168.1.146 ansible_connection=ssh ansible_user=user1

但是使用 ansible-playbook -i inventory playbook.yml -vvvv 调用的 Ansible 会打印以下内容:

GATHERING FACTS ***************************************************************
<192.168.1.146> ESTABLISH CONNECTION FOR USER: techraf

对我有用的是将 remote_user 参数添加到剧本中:

- hosts: srv1
  remote_user: user1

现在相同的 Ansible 命令连接为 user1:

GATHERING FACTS ***************************************************************
<192.168.1.146> ESTABLISH CONNECTION FOR USER: user1

同时将 remote_user 变量添加到 ansible.cfg 使 Ansible 使用目标用户而不是登录用户。

库存文件中的 ansible_user 和剧本中的 remote_user/ansible.cfg 是否有不同的用途?

ansible_user有什么用?或者为什么 Ansible 不观察清单中的设置?

您可能 运行 遇到了一个常见问题:已发布的 ansible 文档适用于开发版本(目前为 2.0),我们不会保留旧版本。这是一个很大的争论点...假设您使用的是 2.0 之前的东西,您需要的库存变量名称是 ansible_ssh_useransible_user 在 2.0 中工作(和 ansible_ssh_user 一样 - 它在其中有别名)。

我通常在/etc/ansible/ansible.cfg中添加我的远程用户名如下:

remote_user = MY_REMOTE_USERNAME

这样就不需要在清单文件中为每个主机条目配置 ansible_user。