Skip to content

异构执行引擎概览 ​

在分布式运维场景中,单一脚本语言无法胜任全部需求:日常排障偏爱轻量灵活的 Shell,数据清洗与复杂调用依赖丰富的 Python 生态,跨主机批量配置离不开具备幂等性的 Ansible,而高频核心业务则需要纯 Go 编译的常驻 私有服务 (Custom SDK)。

ETask 通过 统一上下文契约 与 可插拔处理器驱动矩阵,将异构语言的执行机制收敛为标准化中枢,在保障安全隔离的前提下实现引擎的开箱即用与灵活扩展。

  • 执行端核心抽象:internal/grpc/scripts/engine(工作区与沙箱调度编排)
  • 语言驱动适配器:internal/grpc/scripts/language(Shell、Python、Ansible 驱动)
  • 开放扩展 SDK:sdk/executor(面向私有任务的执行器契约与节点基座)

1. 架构体系全景 ​

执行引擎中枢主要由统一契约流转、异构驱动插件矩阵与底层四大运行时沙箱支柱构成:

ETask 异构执行引擎与运行时体系架构

  • 统一契约输入与制品物化:屏蔽底层通信差异,将任务载荷映射为标准的 executor.Context;同时按需自对象存储拉取项目源码与系统/租户依赖包(Artifact),在执行前完成本地只读物化与环境装配;
  • 异构驱动插件矩阵:支持 单文件运行 与 项目级运行 双形态,各驱动独立自治、按需路由:
    • 单文件运行:针对即席脚本或单文件任务,直接在工作区就地生成独立脚本文件启动,轻巧敏捷,零解压与项目依赖开销;
    • 项目级运行:针对包含多目录、配置文件或剧本清单的完整项目,以项目根目录为上下文拉取并启动指定入口;
  • 底层四大沙箱支柱:从 Linux 操作系统底层构筑安全防线,保障凭据不泄露、资源不残留、进程不失控。

2. 异构执行引擎矩阵 ​

ETask 将不同工具与语言的执行细节完全解耦。各引擎在输入输出上遵循统一规范,同时保持各自语言的原生特质:

引擎驱动支持运行形态适用场景详细指南
Shell单文件运行
项目级运行
基础配置、即席命令、Docker 容器操作、系统指标采集Shell 驱动指南
Python单文件运行
项目级运行
复杂数据清洗、多步骤 API 编排、脚本自动化与数据分析Python 驱动指南
Ansible仅支持项目级运行批量主机运维、中间件集群搭建、基础设施标准化配置Ansible 驱动指南
自定义 SDK运行形态自行控制Terraform 编排、SQL 批量变更、企业私有运维系统接入自定义 SDK 指南

3. 底层四大运行时沙箱支柱 ​

无论是哪个语言引擎驱动,在底层均严格受到四大操作系统级运行时基石的约束与保护:

支柱一:独占生命周期工作区 (ETASK_WORKSPACE_ROOT) ​

每次执行分配唯一的独立临时目录。内联代码物化、临时参数生成以及脚本输出文件均限制在该工作区内;任务执行结束后,底层 Archiver 自动触发物理清理,宿主机始终保持无状态。

支柱二:0600 凭据物理沙箱 ​

针对数据库密码、密钥等敏感凭据,彻底杜绝命令行参数传参(防止同机恶意进程通过 ps aux 偷窥),全面落盘至权限严格锁定为 0600(仅当前执行用户可读写)的受控文件:

  • ETASK_ARGS_FILE:任务入参 JSON 文件;
  • ETASK_VARIABLES_FILE:Runner 变量 JSON 文件;
  • ETASK_SHELL_ENV_FILE:经清洗后供 Shell 安全 source 的环境变量文件。

支柱三:Setpgid 进程组级联强杀 ​

配置系统调用属性 SysProcAttr: &syscall.SysProcAttr{Setpgid: true},为子进程开启独立的 POSIX 进程组。任务超时或收到取消信号时,底层执行器直接调用:

go
syscall.Kill(-command.Process.Pid, syscall.SIGKILL)

向**负 PID(代表整个进程组)**精准广播强杀信号,瞬间级联清理全部派生子孙进程,彻底杜绝孤儿僵尸进程。

支柱四:FD 3 结构化结果独立管道 ​

底层为子进程额外开启文件描述符 3(EWORK_RESULT_FD = 3):

  • 脚本通过调用 want_result key value 或直接写入 >&3 回传结构化结果;
  • 结果数据流直通内核管道并落盘,与标准输出(stdout / stderr)的文本日志彻底物理隔离,解决普通系统中文本日志与 JSON 混杂导致解析崩溃的顽疾。

4. 深入专题指引 ​

针对各执行引擎的具体脚本规范、依赖安装与完整开发示例,请查阅对应指南:

基于 MIT 许可发布