编排DSL定义
最近更新时间: 2023-02-23 15:56:42
1、概述
通过DSL定义编排流程,支持yaml语言编写以及图表可视化方式预览,对定义编排流程可直接执行。
2、属性定义
1)flow
flow为编排属性,编排流程定义中存在一个flow属性。
属性 | 名称 | 类型 | 最大长度 | 选项 | 默认值 | 描述 |
---|---|---|---|---|---|---|
inputs | 输入参数 | list | - | 可选 | - | 输入参数名和输出参数名必须唯一 |
outputs | 输出参数 | list | - | 可选 | - | 输入参数名和输出参数名必须唯一 |
steps | 步骤 | list | - | 必选 | - |
2)steps
steps为编排任务步骤属性,每个flow包含一个steps属性,可在steps下定义多个任务步骤,编排任务步骤分操作任务步骤、子编排任务步骤。
属性 | 名称 | 类型 | 长度 | 选项 | 默认值 | 描述 |
---|---|---|---|---|---|---|
code | 编码 | string | 30 | 必选 | - | 必须唯一,如果存在相同的Code,则提示已存在无法保存。 |
name | 名称 | string | 50 | 必选 | - | |
action | 操作 | - | - | 可选 | - | |
subflow | 子编排 | - | - | 可选 | - |
注:action、subflow必须存在一个有值,当都存在值时,优先为action。
3)subflow
subflow为子编排属性,可引用其它编排流程。
属性 | 名称 | 类型 | 长度 | 选项 | 默认值 | 描述 |
---|---|---|---|---|---|---|
code | 编码 | string | 50 | 必选 | - | |
inputs | 输入参数 | string | - | 可选 | - |
4)action
action为操作属性,可引用、内置操作。
属性 | 名称 | 类型 | 长度 | 选项 | 默认值 | 描述 |
---|---|---|---|---|---|---|
code | 编码 | string | - | 必选 | - | |
inputs | 输入参数 | string | - | 可选 | - | |
account | 执行账户 | string | - | 可选 | - | 操作执行账户 |
confirm | 用户是否确认 | boolean | - | false | - | true:确认,false:不确认 |
target | 执行目标 | list/string | - | 可选 | - | 当操作执行主机为agent、proxy、remote时必选,使用方式如下:1.当操作执行主机为agent、remote时1)当值为常量And主机时类型为list,值为主机IP地址2)当值为常量And标签时类型为list,值格式为[tag]centos;注:不同域出现相同IP时默认取第一个,如需更精确匹配,则设置域IP地址,格式为域IP地址/主机IP地址;2.当操作执行主机为proxy时,当值为常量时类型为string,值为域IP地址;3.当值为引用编排参数时,类型为string,引用格式为${paramName};4.当值为引用任务步骤(操作)输出参数时,类型为string,引用格式为${code.paramName}。 |
5)inputs
inputs为输入参数属性,分编排(flow)输入参数、子编排(subflow)任务步骤输入参数、操作(action)任务步骤输入参数。
编排输入参数
属性 | 名称 | 类型 | 长度 | 选项 | 默认值 | 描述 |
---|---|---|---|---|---|---|
name | 参数名称 | string | 30 | 必选 | - | |
type | 数据类型 | string | - | 可选 | text | |
setting | 配置 | string | - | 可选 | 空 | 其中当type为dict、ci时为必选 |
default | 默认值 | string | 10240 | 可选 | 空 | |
description | 描述 | string | - | 可选 | 参数名称 |
子编排任务步骤输入参数
属性 | 名称 | 类型 | 长度 | 选项 | 默认值 | 描述 |
---|---|---|---|---|---|---|
name | 参数名称 | string | - | 必选 | - | |
value | 参数值 | string | - | 可选 | 空 | 1.value未定义则获取子编排默认值(默认值不能为空),否则value必选并且值不为空;2.当引用编排参数时为${paramName};3.当引用输出参数时为${code.paramName};4.固定值使用${}时使用转义${};注:引用时无法解析该字段默认为空值,仅支持单个引用。 |
操作任务步骤输入参数
属性 | 名称 | 类型 | 长度 | 选项 | 默认值 | 描述 |
---|---|---|---|---|---|---|
name | 参数名称 | string | - | 必选 | - | |
value | 参数值 | string | - | 可选 | 空 | 1.当操作参数定义为必填时,value未定义则获取操作默认值(默认值不能为空),否则value必选并且值不为空;2.当引用编排参数时为${paramName};3.当引用输出参数时为${code.paramName};4.固定值使用${}时使用转义${};注:引用时无法解析该字段默认为空值,仅支持单个引用。 |
include | 含所有主机结果 | string | - | 可选 | false | true:包含所有主机结果格式为{"ip1","value1","ip2","value2"};;false:不含有所有主机结果,当输入参数对应的操作执行环境为agent,当前引用操作对应的操作执行环境也为agent时,进行自动ip匹配赋予相对应的值。 |
6)outputs
outputs为输出参数属性。
属性 | 名称 | 类型 | 长度 | 选项 | 默认值 | 描述 |
---|---|---|---|---|---|---|
name | 参数名称 | string | 60 | 必选 | - | |
type | 数据类型 | string | - | 可选 | text | |
description | 描述 | string | - | 可选 | 参数名称 |
7)type
type为数据类型,以下为各数据类型对应默认值类型描述。
数据类型 | 名称 | setting值类型 | default/value值类型 | 描述 |
---|---|---|---|---|
text | 文本 | - | string | |
number | 数字 | - | string | |
dycText | 动态文本 | - | string | |
passwd | 密码 | - | string | |
dict | 字典 | string | string | |
host | 主机 | - | list | 数据格式为域IP/主机IP,例如192.168.1.10/192.168.100.10 |
user | 账户名 | - | list | 账户名 |
ci | 配置项 | object | list | 1.setting 1)配置项类型(type)的code值 2)属性(attribute)的code值,不填为全部属性 3)多选(multiplable),默认为false 2.default/value为配置项ID,多个用逗号隔开 |
proxy | 域 | - | string | 域ip |
datetime | 时间 | - string | 时间格式:YYYY-MM-DD HH:mm |
ci数据类型的setting使用例子:
setting:
type: typeCode1
attribute:
- attributeCode1
- attributeCode2
multiplable: true
使用举例
1、安装Mysql
flow:
inputs:
- name: install_host
default:- 192.168.1.10/192.168.1.100
- 192.168.1.10/192.168.1.101
type: host
steps:
- code: download_mysql
name: 下载Mysql
action:
code: download_file
target: ${install_host}
inputs:- name: download_path
value: /opt - name: res_file
value: private:/service/mysql.zip
- name: download_path
- code: unzip_mysql
name: 解压Mysql
action: code: unzip_file target: ${install_host} inputs:- name: install_path value: /opt/mysql
2、安装Mysql并启动 flow: inputs:
- name: mysql_host
default:
- 192.168.1.10/192.168.1.100
- 192.168.1.10/192.168.1.101 type: host steps:
- code: install_mysql
name: 安装Mysql
subflow:
code: install_mysql
inputs:
- name: install_host value: ${mysql_host}
- code: start_mysql
name: 启动mysql
action:
code: start_mysql
inputs:
- name: install_path value: /opt/mysql target: ${mysql_host}