mirror of
https://github.com/kubesphere/kubekey.git
synced 2025-12-26 01:22:51 +00:00
3.1 KiB
3.1 KiB
任务
task分为单层级task,和多层级task
单层级task: 包含 module 相关字段, 不包含block字段. 一个task只能包含一个module.
多层级task: 不包含 module 相关字段, 包含block字段.
task执行时, 会在定义的host分别上执行.
文件定义
- include_tasks: other/task.yaml
tags: ["always"]
when: true
run_once: false
ignore_errors: false
vars: {a: b}
- name: Block Name
tags: ["always"]
when: true
run_once: false
ignore_errors: false
vars: {a: b}
block:
- name: Task Name
[module]
rescue:
- name: Task Name
[module]
always:
- name: Task Name
[module]
- name: Task Name
tags: ["always"]
when: true
loop: [""]
[module]
include_tasks: 该任务中引用其他任务模板文件.
name: task名称, 非必填.
tags: task的标签, 非必填. 仅作用于playbook, playbook下的role, task不会继承该标签.
when: 执行条件, 可以定义单个值(字符串)或多个值(数组), 非必填, 默认执行该role. 值采用模板语法编写, 对每个的host单独计算值.
failed_when: 失败条件, host满足该条件时,判定为执行失败, 可以定义单个值(字符串)或多个值(数组), 非必填. 值采用模板语法编写, 对每个的host单独计算值.
run_once: 是否只执行一次, 非必填, 默认false, 会在第一个hosts上执行.
ignore_errors: 是否忽略失败, 非必填, 默认false.
vars: 配置默认参数, 非必填, yaml格式.
loop: 循环执行module中定义的操作, 每次执行时,以item: loop-value的形式将值传递给module. 可以定义单个值(字符串)或多个值(数组), 非必填, 值采用模板语法编写, 对每个的host单独计算值.
retries: task执行失败时. 需要重新尝试几次.
register: 值为字符串, 将任务执行结果注册到variable中, 传递给后续的task. register包含两个子字段:
- stderr: 失败输出
- stdout: 成功输出 register_type: 注册register中stderr和stdout的格式。
- string: 默认,以字符串的格式注册。
- json: 以json的格式注册。
- yaml: 以yaml的格式注册。
block: task集合, 非必填(当未定义module相关字段时, 必填), 一定会执行.
rescue: task集合, 非必填, 当block执行失败(task集合有一个执行失败即为该block失败)时,执行该task集合.
always: task集合, 非必填, 当block和rescue执行完毕后(无论成功失败)都会执行该task集合.
module: task实际要执行的操作, 非必填(当未block字段时, 必填).map格式的数据, key为module_name, value为args. 可用的module需提前在项目中进行注册。已注册的module如下 - assert
- command
- copy
- debug
- fetch
- gen_cert
- image
- prometheus
- set_fact
- setup
- template