Citând din Condiționale cu include:
Când utilizați o condiție pentru o instrucțiune include_*, condiția se aplică numai sarcinii include în sine și nu altor sarcini din fișierul (fișierele) inclus(e).
Acest lucru funcționează conform așteptărilor
- include_tasks: set-x.yml
când: x nu este definit
Nicio sarcină din fișierul inclus nu va fi utilizată
SARCINA [include_tasks] ************************************************ **
inclus: /export/scratch/tmp8/set-x.yml pentru localhost
Situația este diferită cu blocuri. Citând din Gruparea sarcinilor cu blocuri:
Toate sarcinile dintr-un bloc moștenesc directive aplicate la nivel de bloc. ... Directiva nu afectează blocul în sine, ea este moștenită doar de sarcinile incluse într-un bloc. De exemplu, o instrucțiune when este aplicată sarcinilor dintr-un bloc, nu blocului în sine.
Daca pui include_sarcini într-un bloc
- bloc:
- include_tasks: set-x.yml
când: x nu este definit
condiția se aplică tuturor sarcinilor. De asemenea, sarcinilor incluse, depășind astfel regula anterioară conform căreia o condiție se aplică numai sarcinii de includere în sine.
SARCINA [include_tasks] ************************************************ ***
inclus: /export/scratch/tmp8/set-x.yml pentru localhost
SARCINA [set_fact] ************************************************ ********
ok: [localhost]
SARCINA [depanare] ************************************************ **********
săriți peste: [localhost]
Deschide o problema dacă crezi că acesta este un bug.