我正在尝试使用除我登录控制计算机之外的帐户对服务器运行Ansible playbook。我根据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
和playbook / remote_user
中的ansible.cfg
用于不同目的吗?
ansible_user
用于什么?或者为什么Ansible没有观察清单中的设置?
答案 0 :(得分:15)
您可能会遇到一个常见问题:已发布的ansible文档适用于开发版本(目前为2.0),我们不会保留旧版本。这是一个很大的争论点......假设你正在使用2.0之前的版本,那么你需要的库存var名称是ansible_ssh_user
。 ansible_user
在2.0中工作(ansible_ssh_user
也是如此 - 它会变为别名)。
答案 1 :(得分:2)
我通常在/etc/ansible/ansible.cfg
中添加我的远程用户名,如下所示:
remote_user = MY_REMOTE_USERNAME
这样就不需要在每个主机条目的库存文件中配置ansible_user。