On Fri, 8 Nov 2019 06:13:10 -0800 (PST)
I guess
- *subelements* filter is executed before *when*, because
- *when* is evaluated on each iteration, because
- *when* argument can change on each iteration (e.g. may include *item*).
- *when* can not be evaluated before *subelements*, because *item* does not
exist yet.
The loop will fail
loop: "{{ FIREWALLD_ZONE_SERVICE|subelements('SERVICES') }}"
when: FIREWALLD_ZONE_SERVICE is defined
FAILED! => {"msg": "'FIREWALLD_ZONE_SERVICE' is undefined"}
The loop below is skipped when FIREWALLD_ZONE_SERVICE is not defined
(this is not consistent, it should also fail. Source would reveal why)
loop: "{{ FIREWALLD_ZONE_SERVICE }}"
when: FIREWALLD_ZONE_SERVICE is defined
,but it will also fail if the evaluation of the *loop* argument
(FIREWALLD_ZONE_SERVICE) before *when* is forced e.g.
loop: "{{ FIREWALLD_ZONE_SERVICE }}"
when: item|length > 10 and
FIREWALLD_ZONE_SERVICE is defined
FAILED! => {"msg": "'FIREWALLD_ZONE_SERVICE' is undefined"}
Cheers,
-vlado