Update docs on import/include tasks (#33032)
(cherry picked from commit 30da71d880
)
This commit is contained in:
parent
9ae2050e2f
commit
28e16eaad8
1 changed files with 8 additions and 20 deletions
|
@ -13,7 +13,7 @@ As noted in :doc:`playbooks_reuse`, include and import statements are very simil
|
||||||
|
|
||||||
Please refer to :doc:`playbooks_reuse` for documentation concerning the trade-offs one may encounter when using each type.
|
Please refer to :doc:`playbooks_reuse` for documentation concerning the trade-offs one may encounter when using each type.
|
||||||
|
|
||||||
Also be aware that this behaviour changed in 2.4; prior to that Ansible version only ``include`` was available, and it behaved differently depending on context.
|
Also be aware that this behaviour changed in 2.4. Prior to Ansible 2.4, only ``include`` was available and it behaved differently depending on context.
|
||||||
|
|
||||||
.. versionadded:: 2.4
|
.. versionadded:: 2.4
|
||||||
|
|
||||||
|
@ -22,7 +22,6 @@ Importing Playbooks
|
||||||
|
|
||||||
It is possible to include playbooks inside a master playbook. For example::
|
It is possible to include playbooks inside a master playbook. For example::
|
||||||
|
|
||||||
---
|
|
||||||
- import_playbook: webservers.yml
|
- import_playbook: webservers.yml
|
||||||
- import_playbook: databases.yml
|
- import_playbook: databases.yml
|
||||||
|
|
||||||
|
@ -36,16 +35,15 @@ Prior to 2.4 only ``include`` was available and worked for both playbooks and ta
|
||||||
Including and Importing Task Files
|
Including and Importing Task Files
|
||||||
``````````````````````````````````
|
``````````````````````````````````
|
||||||
|
|
||||||
Use of included task lists is a great way to define a role that system is going to fulfill. A task include file simply contains a flat list of tasks::
|
Breaking tasks up into different files is an excellent way to organize complex sets of tasks or reuse them. A task file simply contains a flat list of tasks::
|
||||||
|
|
||||||
# common_tasks.yml
|
# common_tasks.yml
|
||||||
---
|
|
||||||
- name: placeholder foo
|
- name: placeholder foo
|
||||||
command: /bin/foo
|
command: /bin/foo
|
||||||
- name: placeholder bar
|
- name: placeholder bar
|
||||||
command: /bin/bar
|
command: /bin/bar
|
||||||
|
|
||||||
You can then use ``import_tasks`` or ``include_tasks`` to include this file in your main task list::
|
You can then use ``import_tasks`` or ``include_tasks`` to execute the tasks in a file in the main task list::
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- import_tasks: common_tasks.yml
|
- import_tasks: common_tasks.yml
|
||||||
|
@ -65,27 +63,17 @@ You can also pass variables into imports and includes::
|
||||||
vars:
|
vars:
|
||||||
wp_user: bob
|
wp_user: bob
|
||||||
|
|
||||||
Variables can also be passed to include files using an alternative syntax, which also supports structured variables like dictionaries and lists::
|
See :ref:`ansible_variable_precedence` for more details on variable inheritance and precedence.
|
||||||
|
|
||||||
tasks:
|
Task include and import statements can be used at arbitrary depth.
|
||||||
- include_tasks: wordpress.yml
|
|
||||||
vars:
|
|
||||||
wp_user: timmy
|
|
||||||
ssh_keys:
|
|
||||||
- "{{ lookup('file', 'keys/one.pub') }}"
|
|
||||||
- "{{ lookup('file', 'keys/two.pub') }}"
|
|
||||||
|
|
||||||
Using either syntax, variables passed in can then be used in the included files. These variables will only be available to tasks within the included file. See :ref:`ansible_variable_precedence` for more details on variable inheritance and precedence.
|
|
||||||
|
|
||||||
Task include statements can be used at arbitrary depth.
|
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
Static and dynamic can be mixed, however this is not recommended as it may lead to difficult-to-diagnose bugs in your playbooks.
|
- Static and dynamic can be mixed, however this is not recommended as it may lead to difficult-to-diagnose bugs in your playbooks.
|
||||||
|
- The ``key=value`` syntax for passing variables to import and include is deprecated. Use YAML ``vars:`` instead.
|
||||||
|
|
||||||
Includes and imports can also be used in the ``handlers:`` section; for instance, if you want to define how to restart apache, you only have to do that once for all of your playbooks. You might make a handlers.yml that looks like::
|
Includes and imports can also be used in the ``handlers:`` section. For instance, if you want to define how to restart Apache, you only have to do that once for all of your playbooks. You might make a ``handlers.yml`` that looks like::
|
||||||
|
|
||||||
# more_handlers.yml
|
# more_handlers.yml
|
||||||
---
|
|
||||||
- name: restart apache
|
- name: restart apache
|
||||||
service: name=apache state=restarted
|
service: name=apache state=restarted
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue