I am either missing something simple or ran into a bug.
I have a playbook that passes variable to a role as follows:
roles:
- { role: test_role, var1: ‘some string’, var2: “{{ some_var }}”, var3: “{{ some_var2 }}” }
Now both some_var and some_var2 are set (verified with a debug before this)
in the role I have the following:
-
set_fact: var2 = “something”
when: var2 is not defined -
set_fact: var3 = “something”
when: var3 is not defined -
debug: “msg=’ {{ var3 is not defined }} '”
-
debug: “msg=‘{{ var2 }} {{ var3 }}’”
Now the output is as follows
TASK: [test_role | set_fact var2 = something] ***
skipping: [10.0.0.1]
TASK: [test_role | set_fact var3 = something] ***
ok: [10.0.0.1]
TASK: [test_role | debug msg=’ True '] ***************************************
ok: [10.0.0.1] => {
“item”: “”,
“msg”: " True "
}
TASK: [test_role | debug msg=‘{{var2}} {{var3}}’] ********
fatal: [10.0.0.1] => One or more undefined variables: ‘var3’ is undefined
So as you can see the var2 is passed through and is defined and so the set_fact is skipped.
But var3 is not passed so the set_fact runs but it is still undefined afterwards.
I have tried changing the order of the variables in the playbook, renaming the variable and I always get the same problem. Anyone know what I’m missing?
Thanks,