Ansible: how to construct a variable from another variable and then fetch it’s value

Question:

Here is my problem I need to use one variable ‘target_host’ and then append ‘_host’ to it’s value to get another variable name whose value I need.
If you look at my playbook. Task nbr 1,2,3 fetch the value of variable however nbr 4 is not able to do what I expect. Is there any other way to achieve the same in ansible?

Answer:

This (AFAIK) isn’t possible. The primary limitation that stops us doing this (no matter how you spin it), is ‘variable expansion’ in ansible is a single pass process and what you want requires multiple-passes.

Only [seriously hacky] ways I can think of are:

  • Create the playbook dynamically from your playbook using template and execute it.
  • I heard that Jinja2 engine does multi-pass evaluation. May be if you put these strings in a template and then use the lookup('template', ...) filter. Unfortunately I have no experience with Jinja2 templates so not quite sure if this is even an option.

Leave a Reply