How to assign inventory group alias to a variable?

I have this Ansible inventory file:

[fileservers]
fs01.example.com ansible_ssh_host=192.168.1.1 ip_addr=192.168.1.1

[dbservers]
db01.example.com ansible_ssh_host=192.168.1.2 ip_addr=192.168.1.2

[webservers]
web01.example.com ansible_ssh_host=192.168.1.3 ip_addr=192.168.1.3

[cmsservers]
cms01.example.com ansible_ssh_host=192.168.1.4 ip_addr=192.168.1.4

What I want to do is be able to set some facts that contain the host aliases when I run this playbook on my web01.example.com server:

  • name: create alias facts
    set_fact:
    file_server_alias: hostvars[{{ inventory_hostname }}][‘groups’][‘fileservers’][0] # should get string ‘fs01.example.com
    db_server_alias: hostvars[{{ inventory_hostname }}][‘groups’][‘dbservers’][0] # should get string ‘db01.example.com
    cms_server_alias: hostvars[{{ inventory_hostname }}][‘groups’][‘cmsservers’][0] # should get string ‘cms01.example.com

However, when I do the above, file_server_alias just gets set to ‘hostvars[{{ inventory_hostname }}][‘groups’][‘fileservers’][0]’, and so on. Is there any way to assign these inventory group aliases to variables?

Thanks.

The syntax is not correct, correct syntax should be
   file_server_alias: "{{ hostvars[inventory_hostname]['groups']['fileservers'][0] }}"

But there is not point in using hostvars in this example since you can just use groups(one of the magic variables in Ansible)
   file_server_alias: "{{ groups['fileservers'][0] }}"

Thank you! That is the solution.