include_role – Load and execute a role
New in version 2.2.
Synopsis
- Dynamically loads and executes a specified role as a task.
- May be used only where Ansible tasks are allowed - inside
pre_tasks
,tasks
, orpost_tasks
playbook objects, or as a task inside a role. - Task-level keywords, loops, and conditionals apply only to the
include_role
statement itself. - To apply keywords to the tasks within the role, pass them using the
apply
option or use import_role instead. - Ignores some keywords, like
until
andretries
. - This module is also supported for Windows targets.
Parameters
Parameter | Choices/Defaults | Comments |
---|---|---|
allow_duplicates boolean |
| Overrides the role's metadata setting to allow using a role more than once with the same parameters. |
apply - added in 2.7 | Accepts a hash of task keywords (e.g. tags , become ) that will be applied to all tasks within the included role. | |
defaults_from string | Default: "main" | File to load from a role's defaults/ directory. |
handlers_from string added in 2.8 | Default: "main" | File to load from a role's handlers/ directory. |
name string / required | The name of the role to be executed. | |
public boolean added in 2.7 |
| This option dictates whether the role's vars and defaults are exposed to the playbook. If set to yes the variables will be available to tasks following the include_role task. This functionality differs from standard variable exposure for roles listed under the roles header or import_role as they are exposed at playbook parsing time, and available to earlier roles and tasks as well. |
tasks_from string | Default: "main" | File to load from a role's tasks/ directory. |
vars_from string | Default: "main" | File to load from a role's vars/ directory. |
Notes
Note
- Handlers are made available to the whole play.
- Before Ansible 2.4, as with
include
, this task could be static or dynamic, If static, it implied that it won’t need templating, loops or conditionals and will show included tasks in the--list
options. Ansible would try to autodetect what is needed, but you can setstatic
toyes
orno
at task level to control this. - After Ansible 2.4, you can use import_role for
static
behaviour and this action fordynamic
one.
See Also
See also
- import_playbook – Import a playbook
- The official documentation on the import_playbook module.
- import_role – Import a role into a play
- The official documentation on the import_role module.
- import_tasks – Import a task list
- The official documentation on the import_tasks module.
- include_tasks – Dynamically include a task list
- The official documentation on the include_tasks module.
- Including and Importing
- More information related to including and importing playbooks, roles and tasks.
Examples
- include_role: name: myrole - name: Run tasks/other.yaml instead of 'main' include_role: name: myrole tasks_from: other - name: Pass variables to role include_role: name: myrole vars: rolevar1: value from task - name: Use role in loop include_role: name: '{{ roleinputvar }}' loop: - '{{ roleinput1 }}' - '{{ roleinput2 }}' loop_control: loop_var: roleinputvar - name: Conditional role include_role: name: myrole when: not idontwanttorun - name: Apply tags to tasks within included file include_role: name: install apply: tags: - install tags: - always
Status
- This module is guaranteed to have no backward incompatible interface changes going forward. [stableinterface]
- This module is maintained by the Ansible Core Team. [core]
Red Hat Support
More information about Red Hat’s support of this module is available from this Red Hat Knowledge Base article.
Authors
- Ansible Core Team (@ansible)
Hint
If you notice any issues in this documentation you can edit this document to improve it.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.8/modules/include_role_module.html