Add porting guide note about include inheritance change (#35199)
* Add porting guide note about include inheritance change. Fixes #35096 * Also make note of using import_* when possible * Edited for clarity.
This commit is contained in:
parent
a23c95023b
commit
3729cc57d0
1 changed files with 45 additions and 1 deletions
|
@ -17,7 +17,51 @@ This document is part of a collection on porting. The complete list of porting g
|
||||||
Playbook
|
Playbook
|
||||||
========
|
========
|
||||||
|
|
||||||
No notable changes.
|
Dynamic includes and attribute inheritance
|
||||||
|
------------------------------------------
|
||||||
|
|
||||||
|
In Ansible version 2.4, the concept of dynamic includes (``include_tasks``) versus static imports (``import_tasks``) was introduced to clearly define the differences in how ``include`` works between dynamic and static includes.
|
||||||
|
|
||||||
|
All attributes applied to a dynamic ``include_*`` would only apply to the include itself, while attributes applied to a
|
||||||
|
static ``import_*`` would be inherited by the tasks within.
|
||||||
|
|
||||||
|
This separation was only partially implemented in Ansible version 2.4. As of Ansible version 2.5, this work is complete and the separation now behaves as designed; attributes applied to an ``include_*`` task will not be inherited by the tasks within.
|
||||||
|
|
||||||
|
To achieve an outcome similar to how Ansible worked prior to version 2.5, playbooks
|
||||||
|
should use an explicit application of the attribute on the needed tasks, or use blocks to apply the attribute to many tasks. Another option is to use a static ``import_*`` when possible instead of a dynamic task.
|
||||||
|
|
||||||
|
**OLD** In Ansible 2.4:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
- include_tasks: "{{ ansible_distribution }}.yml"
|
||||||
|
tags:
|
||||||
|
- distro_include
|
||||||
|
|
||||||
|
|
||||||
|
**NEW** In Ansible 2.5:
|
||||||
|
|
||||||
|
Including task:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
- include_tasks: "{{ ansible_distribution }}.yml"
|
||||||
|
tags:
|
||||||
|
- distro_include
|
||||||
|
|
||||||
|
Included file:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
- block:
|
||||||
|
- debug:
|
||||||
|
msg: "In included file"
|
||||||
|
|
||||||
|
- apt:
|
||||||
|
name: nginx
|
||||||
|
state: latest
|
||||||
|
tags:
|
||||||
|
- distro_include
|
||||||
|
|
||||||
Deprecated
|
Deprecated
|
||||||
==========
|
==========
|
||||||
|
|
Loading…
Reference in a new issue