You are reading an unmaintained version of the Ansible documentation. Unmaintained Ansible versions can contain unfixed security vulnerabilities (CVE). Please upgrade to a maintained version. See the latest Ansible documentation.
The include action was too confusing, dealing with both plays and tasks, being both dynamic and static. This module will be removed in version 2.8. As alternatives use include_tasks, import_playbook, import_tasks.
Includes a file with a list of plays or tasks to be executed in the current playbook.
Files with a list of plays can only be included at the top level. Lists of tasks can only be included where tasks normally run (in play).
Before Ansible version 2.0, all includes were ‘static’ and were executed when the play was compiled.
Static includes are not subject to most directives. For example, loops or conditionals are applied instead to each inherited task.
Since Ansible 2.0, task includes are dynamic and behave more like real tasks. This means they can be looped, skipped and use variables from any source. Ansible tries to auto detect this, but you can use the static directive (which was added in Ansible 2.1) to bypass autodetection.
This module is also supported for Windows targets.
-hosts:localhosttasks:-debug:msg:play1-name:Include a play after another playinclude:otherplays.yaml-hosts:alltasks:-debug:msg:task1-name:Include task list in playinclude:stuff.yaml-debug:msg:task10-hosts:alltasks:-debug:msg:task1-name:Include task list in play only if the condition is trueinclude:"{{hostvar}}.yaml"static:nowhen:hostvar is defined