Ansible: run different plays on the same host as different users
I want to manage two user accounts, which happen to be on the same host (mylaptop
). I have a separate play for each of them. However, Ansible keeps executing both plays as the same user, despite what I wrote in my inventory
:
[personal_computers]
mylaptop ansible_ssh_user=personal-user
[work_computers]
mylaptop ansible_ssh_user=work-user
This is the playbook (test.yml
) I'm using for testing:
- hosts: personal_computers
tasks:
- debug: var={{ ansible_env.HOME }}
- hosts: work_computers
tasks:
- debug: var={{ ansible_env.HOME }}
When I run it with ansible-playbook -i inventory test.yml -vvvv
, I can see that all connections are made with user work-user
, and both debug tasks return /home/work-user
. Is this a bug in ansible? How can I accomplish what I need, i.e. running two plays as two different users?
I'm using ansible 1.9.2.
Solution 1:
You might as well use 2 distinct inventory hostnames and specify ansible_ssh_host
host variable:
[personal_computers]
personal-laptop ansible_ssh_host=mylaptop ansible_ssh_user=personal-user
[work_computers]
work-laptop ansible_ssh_host=mylaptop ansible_ssh_user=work-user