hostname as a variable in a playbook based on inventory vars

I need to get the hostname as a variable in my playbook

I have the inventory defined the inventory like below

[group1]
host1.vs.com type=secondary servertype=vm
host2.vs.com type=primary servertype=vm

[group2]
host4.vs.com type=primary servertype=physical

host3.vs.com type=secondary servertype=physical

I run my playbook with --limit option always so using ansible_limit I’m able to get the variable name of the group.

now depending on the group i need to get the hostname which is secondary as a variable.
id if --limit is group1, I need host1.vs.com as a var…how can i do that?

any help is appreciated, thank you

HI Saranya,

If i didn’t misunderstood, would you like to make use of inbuilt special variables to get hostname as - inventory_hostname, inventory_hostname_short which directly gives you hostname value and it can be stored in variable or printed using debug module.

PS :- You can also make use of facts to get hostname → parse it → store value in variable.

Cheers,
Parth

H ello,

I did look at magic variables and i was not able to get what i wanted…
i basically want to get hostname which is of type secondary from group1 … so that i can store it in a var and use elsewhere…

I know i can use inventory_hostname but based on condition I want to get that i.,e type secondary from group1

iterating over hostvars data looks like a bug reported by few of them (found articles). tried but not able to iterate over hostvars using loop or with_items.

https://gitmemory.com/issue/ansible/ansible/68364/683214528

https://github.com/ansible/ansible/issues/68364

(attachments)