# Using a variable inside reference

**URL:** <https://forum.ansible.com/t/using-a-variable-inside-reference/32488>\
**Category:** Ansible Project\
**Created:** [March 17, 2020, 7:21pm UTC](https://forum.ansible.com/t/using-a-variable-inside-reference/32488 "2020-03-17T19:21:25Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jason\_Bullen](https://avatars.discourse-cdn.com/v4/letter/j/8797f3/32.png) [@Jason\_Bullen](https://forum.ansible.com/u/Jason_Bullen)\
**Post date:** [March 17, 2020, 7:21pm UTC](https://forum.ansible.com/t/using-a-variable-inside-reference/32488/1 "2020-03-17T19:21:25Z")

</div>

I have 2 var files with a top level of dev and prod. All sublevels are the same. For example:

dev:  
accesspolicies:

- policy1
- policy 2

and

prod:  
accesspolicies:

- policy1

There is a problem that i keep running into where my design requires a var\_prompt input to be used to define which variable to loop over. When I run into this problem I have to go back to the drawing board because I cannot find a way to do the following:

vars\_prompt:

- name: env  
prompt: “Environment”  
include\_vars:  
file: “{{env}}.yml”

- debug:  
msg: “{{env}}.accesspolicies”

Is there a way to do this better?

---

<div class="post-metadata">

**Author:** ![vbotka](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/vbotka/32/359_2.png) [@vbotka](https://forum.ansible.com/u/vbotka)\
**Post date:** [March 17, 2020, 8:56pm UTC](https://forum.ansible.com/t/using-a-variable-inside-reference/32488/2 "2020-03-17T20:56:46Z")

</div>

> file dev.yml  
> dev:  
> &nbsp;&nbsp;accesspolicies:  
> &nbsp;&nbsp;&nbsp;&nbsp;- policy1  
> &nbsp;&nbsp;&nbsp;&nbsp;- policy2
> 
> file prod.yml  
> prod:  
> &nbsp;&nbsp;accesspolicies:  
> &nbsp;&nbsp;&nbsp;&nbsp;- policy1
> 
> [...]  
> vars\_prompt:  
> &nbsp;&nbsp;- name: env  
> &nbsp;&nbsp;&nbsp;&nbsp;prompt: "Environment"  
> tasks:  
> &nbsp;&nbsp;- include\_vars:  
> &nbsp;&nbsp;&nbsp;&nbsp;file: "{{ env }}.yml"  
> &nbsp;&nbsp;- debug:  
> &nbsp;&nbsp;&nbsp;&nbsp;msg: "{{ env }}.accesspolicies"
> 
> Is there a way to do this better?

"lookup" plugin "vars" helps to reference the variable. For example

&nbsp;&nbsp;\> cat play.yml  
&nbsp;&nbsp;- hosts: localhost  
&nbsp;&nbsp;&nbsp;&nbsp;vars\_prompt:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- name: env  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private: false  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prompt: "Environment"  
&nbsp;&nbsp;&nbsp;&nbsp;tasks:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- include\_vars: "{{ env }}.yml"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- set\_fact:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my\_env: "{{ lookup('vars', env ) }}"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- debug:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var: my\_env.accesspolicies

gives

&nbsp;&nbsp;\> ansible-playbook play.yml  
&nbsp;&nbsp;Environment: dev  
&nbsp;&nbsp;...  
&nbsp;&nbsp;TASK [debug] \*\*\*  
&nbsp;&nbsp;ok: [localhost] =\> {  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"my\_env.accesspolicies": [  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"policy1",  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"policy2"  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]  
&nbsp;&nbsp;}

HTH,  
&nbsp;&nbsp;-vlado
