编排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
  • 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}