ansible常用模块 -- include_role模块 -- 加载并执行角色
include_role模块 – 加载并执行角色
一、摘要
- 将指定的角色作为任务动态加载和执行。
- 只能在Ansible任务允许的情况下使用——在pre_tasks, tasks,或post_tasks剧本对象内,或作为角色内的任务。
- 任务级关键字、循环和条件只应用于include_role语句本身。
- 要将关键字应用到角色中的任务,可以使用apply选项传递它们,或者使用import_role代替。
- 忽略一些关键字,如until和retries
- Windows目标也支持此模块
二、参数
参数 | 选项/默认值 | 描述 |
---|---|---|
allow_duplicates boolean | · yes ← · no | 覆盖角色的元数据设置,以允许使用相同参数多次使用角色 |
apply | 接受任务关键字的散列(例如,tags,become),它将应用于包含的角色中的所有任务。 | |
defaults_from string | Default: “main” | 要从角色的defaults/目录加载的文件。 |
handlers_from string | Default: “main” | 要从角色的handlers/目录加载的文件。 |
name string required | 要执行的角色的名称 | |
public boolean | · no ← · yes | 此选项指示角色的变量和默认值是否向剧本公开。如果设置为yes,这些变量将对include_role任务之后的任务可用。此功能不同于在roles头或import_role下面列出的角色的标准变量公开,因为它们在剧本解析时公开,并且对早期的角色和任务也可用。 |
tasks_from string | Default: “main” | 要从角色的tasks/目录加载的文件。 |
vars_from string | Default: “main” | 要从角色的vars/目录加载的文件。 |
三、示例
- 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
官方文档:https://docs.ansible.com/ansible/2.9/modules/include_role_module.html#include-role-module