Question:
I am trying to run an Ansible playbook against a server using an account other than the one I am logged on the control machine. I tried to specify an ansible_user
in the inventory file according to the documentation on Inventory:
1 2 3 |
[srv1] 192.168.1.146 ansible_connection=ssh ansible_user=user1 |
However Ansible called with ansible-playbook -i inventory playbook.yml -vvvv
prints the following:
1 2 3 |
GATHERING FACTS *************************************************************** <192.168.1.146> ESTABLISH CONNECTION FOR USER: techraf |
What worked for me was adding the remote_user
argument to the playbook:
1 2 3 |
- hosts: srv1 remote_user: user1 |
Now the same Ansible command connects as user1
:
1 2 3 |
GATHERING FACTS *************************************************************** <192.168.1.146> ESTABLISH CONNECTION FOR USER: user1 |
Also adding remote_user
variable to ansible.cfg
makes Ansible use the intended user instead of the logged-on one.
Are the ansible_user
in inventory file and remote_user
in playbook/ansible.cfg
for different purposes?
What is the ansible_user
used for? Or why doesn’t Ansible observe the setting in the inventory?
Answer:
You’re likely running into a common issue: the published ansible docs are for the development version (2.0 right now), and we don’t keep the old ones around. It’s a big point of contention… Assuming you’re using something pre-2.0, the inventory var name you need is ansible_ssh_user
. ansible_user
works in 2.0 (as does ansible_ssh_user
– it gets aliased in).