# pre-calculation of variable in role/../vars

**URL:** <https://forum.ansible.com/t/pre-calculation-of-variable-in-role-vars/13501>\
**Category:** Ansible Project\
**Created:** [September 18, 2013, 4:33pm UTC](https://forum.ansible.com/t/pre-calculation-of-variable-in-role-vars/13501 "2013-09-18T16:33:03Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jerome\_Wagner](https://avatars.discourse-cdn.com/v4/letter/j/76d3ee/32.png) [@Jerome\_Wagner](https://forum.ansible.com/u/Jerome_Wagner)\
**Post date:** [September 18, 2013, 4:33pm UTC](https://forum.ansible.com/t/pre-calculation-of-variable-in-role-vars/13501/1 "2013-09-18T16:33:03Z")

</div>

Hello,  
In the ‘vars’ directory of my ‘base-user’ role, I added :

homedir\_prefix: “{% if user != ‘root’%}/home{% endif %}”

I thought I would be able to have the correct homedir for all users this way but I can’t seem to make it work.

The following works :

- name: bash history conservation for user ‘{{ user }}’  
lineinfile: dest={% if user != “root”%}/home{% endif %}/{{ user }}/.bashrc  
regexp=“PROMPT\_COMMAND”  
line=“export PROMPT\_COMMAND=‘history -a; history -c; history -r’”  
sudo\_user: “{{ user }}”

but I would like to extract the {% if user != “root”%}/home{% endif %} part.

Did you find a solution for this ?

---

<div class="post-metadata">

**Author:** ![Michael\_DeHaan2](https://avatars.discourse-cdn.com/v4/letter/m/da6949/32.png) [@Michael\_DeHaan2](https://forum.ansible.com/u/Michael_DeHaan2)\
**Post date:** [September 18, 2013, 7:47pm UTC](https://forum.ansible.com/t/pre-calculation-of-variable-in-role-vars/13501/2 "2013-09-18T19:47:23Z")

</div>

You can do this

vars:  
homedir: “{% if user != ‘root’ }/home/{{user}}{% else %}/root{% end if %}”

…

dest={{ homedir }}/.bashrc

---

<div class="post-metadata">

**Author:** ![Jerome\_Wagner](https://avatars.discourse-cdn.com/v4/letter/j/76d3ee/32.png) [@Jerome\_Wagner](https://forum.ansible.com/u/Jerome_Wagner)\
**Post date:** [September 19, 2013, 9:54am UTC](https://forum.ansible.com/t/pre-calculation-of-variable-in-role-vars/13501/3 "2013-09-19T09:54:13Z")

</div>

Hello,  
I tried

role/myrole/vars/main.yml:  
homedir: “{% if user != ‘root’ }/home/{{user}}{% else %}/root{% end if %}”

role/myrole/tasks/main.yml  
…  
dest={{ homedir }}/.bashrc

but I get an error :

failed: […] =\> {“failed”: true, “item”: “”}  
msg: this module requires key=value arguments ([‘dest={%’, ‘if’, ‘user’, ‘!=’, ‘root’, ‘}/home/{{user}}{%’, ‘else’, ‘%}/root{%’, ‘end’, ‘if’, ‘%}/.bashrc’, ’

trying with  
…  
dest=‘{{ homedir }}/.bashrc’

I get :

failed: […] =\> {“failed”: true, “item”: “”, “rc”: 257}  
msg: Destination {% if user != root }/home/{{user}}{% else %}/root{% end if %}/.bashrc does not exist !

I don’t understand why the templating is not working.  
I also tried with

role/myrole/vars/main.yml:  
homedir: “{% if user != ‘root’ }/home/{{user}}{% else %}/root{% endif %}”

(note the “endif” instead of “end if”)

Am I missing something ?  
Thanks for your help

---

<div class="post-metadata">

**Author:** ![Jerome\_Wagner](https://avatars.discourse-cdn.com/v4/letter/j/76d3ee/32.png) [@Jerome\_Wagner](https://forum.ansible.com/u/Jerome_Wagner)\
**Post date:** [September 19, 2013, 11:59am UTC](https://forum.ansible.com/t/pre-calculation-of-variable-in-role-vars/13501/4 "2013-09-19T11:59:27Z")

</div>

Ok I found the error :

instead of :  
vars:

homedir: “{% if user != ‘root’ }/home/{{user}}{% else %}/root{% end if %}”

use

vars:  
homedir: “{% if user != ‘root’ %}/home/{{user}}{% else %}/root{% endif %}”

Those typos always seem so obvious after they’re found 😉

Sorry for the noise.
