Ansible, set_fact using if then else statement

Question:

I am trying to set a variable in Ansible with set_fact at runtime based upon another variable. If uses first value no matter what the actual value is. Here is my code example:

l_env is d no matter what jm_env is set.

Answer:

Firstly, dictionaries in YAML are not ordered (and the syntax used by Ansible here is a YAML dictionary), so you have no guarantee Ansible would first set jm_env before proceeding to l_env — you need to split the assignment into two tasks.

Secondly, your test expressions are incorrect — '{{jm_env}}==Develop' is a string because it is quoted; and testing if 'string' will always evaluate to true (this is the direct reason you always get d in the output).

Use:

Leave a Reply