Variable within Variable

44 views
Skip to first unread message

Pr0fess0rM

unread,
May 19, 2016, 1:23:37 PM5/19/16
to Ansible Project
Hey guys,

I have a variable {{ basket }} and it has a string for contents. The contents will change every time I run the playbook and I need a way to translate the contents of the basket, let's say "apple" to another name, let's say "JameslikesApples". But if the contents were "banana" it would have a completely different translation like "IwentToSanFrancisco". 

I've made a dictionary declaring "apple: 'JameslikesApples'" and on the next line: "banana: 'IwentToSanFrancisco'". I need to be able to reference "JameslikesApples" in a shell command and I just can't see a way around it. I've tried {{ {{ basket }} }} but Ansible doesn't accept the quadruple braces.

Any and all help is appreciated!

Josh Smift

unread,
May 19, 2016, 1:36:29 PM5/19/16
to ansible...@googlegroups.com
P> I've made a dictionary declaring "apple: 'JameslikesApples'" and on the
P> next line: "banana: 'IwentToSanFrancisco'". I need to be able to
P> reference "JameslikesApples" in a shell command and I just can't see a
P> way around it. I've tried {{ {{ basket }} }} but Ansible doesn't accept
P> the quadruple braces.

The double-braces tell Ansible to start parsing Jinja, so once you've done
that, doing it again doesn't do you any good.

What does your dictionary look like? If you had something like

basket:
apple: JameslikesApples
banana: IwentToSanFrancisco

and then you somewhere set

fruit: banana

(or 'fruit: apple') then I'd expect

basket[fruit]

to do the right thing -- you'd change the value of fruit, and get the
right string from the basket.

-Josh (j...@care.com)

(apologies for the automatic corporate disclaimer that follows)




This email is intended for the person(s) to whom it is addressed and may contain information that is PRIVILEGED or CONFIDENTIAL. Any unauthorized use, distribution, copying, or disclosure by any person other than the addressee(s) is strictly prohibited. If you have received this email in error, please notify the sender immediately by return email and delete the message and any attachments from your system.

Mike Biancaniello

unread,
May 19, 2016, 3:09:05 PM5/19/16
to Ansible Project
You can reference variables within variables.

e.g.
# group_vars/all
---
apple
: JameslikesApples
banana
: IwentToSanFrancisco

# group_vars/thing1
---
basket
: {{ apple }}

# group_vars/thing2
---
basket
: {{ banana }}


Then, you can reference {{ basket }} in  your playbook or template:

# site.yml
---
  tasks
:
 
- name: my basket is cool
    debug
: msg="My basket says, {{ basket }}"

Which would translate to
For all hosts in group `thing1`: "My basket says, JameslikesApples"
For all hosts in group `thing2`: "My basket says, IwentToSanFrancisco"
Reply all
Reply to author
Forward
0 new messages