Ansible inventory duplicate hosts in different groups - Ansible picks the last one from the duplicates

Hi

I have an inventory defined as below:

[A]
host1.example.com lhost=1010
host2.example.com lhost=1110

[B]
host1.example.com lhost=2010

now when i run below command on group A for host1.example.com ansible picks up the host in group B

ansible -i inventory A -m shell -a “ls -l /tmp/{{ lhost }}”

output

ls: no such file or directory /tmp/2010

expected: Ansible should execute on host1 in group A and not group B

Is this behaviour intentional or am i running into some bug or is there something wrong with the command execution.

updated command is

ansible -i inventory A -m shell -a “ls -l /tmp/{{ lhost }}” --limit host1.example.com

The host host1.example.com is listed in both group A and group B - the only difference is the value of the variable ‘lhost’. Ansible is executing on the correct host, host1.example.com, but with the variable value from the list ing group B. See https://docs.ansible.com/ansible/devel/user_guide/intro_inventory.html#how-variables-are-merged for information on how Ansible applies variable values.

If that’s a typo and they are different hosts, just correct the inventory entries and the problem will solve itself. If for some reason you want two entries in your inventory for hte same host, you can still give them different aliases - host1on1010 and host1on22010. Or you can store the variable values in a playbook or vars file and select the correct one at run time.

Hope this helps,
Alicia