Ansible:库存中的ansible_user和playbook中的remote_user

tec*_*raf 17 ansible ansible-2.x ansible-inventory

我正在尝试使用除我登录控制计算机之外的帐户对服务器运行Ansible playbook.我尝试ansible_user根据Inventory上的文档在库存文件中指定一个:

[srv1]
192.168.1.146 ansible_connection=ssh ansible_user=user1
Run Code Online (Sandbox Code Playgroud)

然而Ansible调用ansible-playbook -i inventory playbook.yml -vvvv打印以下内容:

GATHERING FACTS ***************************************************************
<192.168.1.146> ESTABLISH CONNECTION FOR USER: techraf
Run Code Online (Sandbox Code Playgroud)

对我remote_user有用的是在剧本中加入论点:

- hosts: srv1
  remote_user: user1
Run Code Online (Sandbox Code Playgroud)

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

GATHERING FACTS ***************************************************************
<192.168.1.146> ESTABLISH CONNECTION FOR USER: user1
Run Code Online (Sandbox Code Playgroud)

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

ansible_user库存文件和remote_user剧本/ ansible.cfg用于不同目的?

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

nit*_*one 18

您可能遇到了一个常见问题:已发布的ansible文档适用于开发版本(目前为2.0),我们不会保留旧版本.这是一个很大的争论点......假设您使用的是2.0之前的版本,那么您需要的库存var名称就是ansible_ssh_user.ansible_user在2.0中工作(就像ansible_ssh_user- 它得到别名).

  • 使用ansible 1.9.4将`ansible_user`更改为`ansible_ssh_user`对我有用. (2认同)

小智 7

我通常添加我的远程用户名,/etc/ansible/ansible.cfg如下所示:

remote_user = MY_REMOTE_USERNAME
Run Code Online (Sandbox Code Playgroud)

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