Ejecutor
Ejecutor
Sección titulada «Ejecutor»Los ejecutores de comandos ejecutan procesos externos con entornos controlados. Dos tipos de ejecutores están disponibles: procesos nativos del SO y contenedores Docker.
Tipos de Entrada
Sección titulada «Tipos de Entrada»| Tipo | Descripción |
|---|---|
exec.native | Ejecutar comandos directamente en el SO host |
exec.docker | Ejecutar comandos dentro de contenedores Docker |
Ejecutor Nativo
Sección titulada «Ejecutor Nativo»Ejecuta comandos directamente en el sistema operativo host.
- name: shell kind: exec.native default_work_dir: /app default_env: PATH: /usr/local/bin:/usr/bin:/bin LANG: en_US.UTF-8 command_whitelist: - git status - git diff - npm run build| Campo | Tipo | Por Defecto | Descripción |
|---|---|---|---|
default_work_dir | string | - | Directorio de trabajo para todos los comandos |
default_env | map | - | Variables de entorno (combinadas con env por comando) |
command_whitelist | string[] | - | Si se establece, solo estos comandos exactos están permitidos |
Ejecutor Docker
Sección titulada «Ejecutor Docker»Ejecuta comandos dentro de contenedores Docker aislados.
- name: sandbox kind: exec.docker image: python:3.11-slim default_work_dir: /workspace network_mode: none memory_limit: 536870912 cpu_quota: 50000 auto_remove: true read_only_rootfs: true no_new_privileges: true cap_drop: - ALL tmpfs: /tmp: rw,noexec,nosuid,size=64m volumes: - /app/data:/workspace/data:ro| Campo | Tipo | Por Defecto | Descripción |
|---|---|---|---|
image | string | requerido | Imagen Docker a usar |
host | string | socket unix | URL del demonio Docker |
default_work_dir | string | - | Directorio de trabajo dentro del contenedor |
default_env | map | - | Variables de entorno |
command_whitelist | string[] | - | Comandos permitidos (coincidencia exacta) |
network_mode | string | bridge | Modo de red: host, bridge, none |
volumes | string[] | - | Montajes de volumen: host:contenedor[:ro] |
user | string | - | Usuario para ejecutar dentro del contenedor |
memory_limit | int | 0 | Límite de memoria en bytes (0 = ilimitado) |
cpu_quota | int | 0 | Cuota de CPU (100000 = 1 CPU, 0 = ilimitado) |
auto_remove | bool | false | Remover contenedor después de salir |
read_only_rootfs | bool | false | Hacer sistema de archivos raíz de solo lectura |
no_new_privileges | bool | false | Prevenir escalación de privilegios |
cap_drop | string[] | - | Capacidades Linux a eliminar |
cap_add | string[] | - | Capacidades Linux a agregar |
pids_limit | int | 0 | Procesos máximos (0 = ilimitado) |
tmpfs | map | - | Montajes tmpfs para rutas con escritura |
Lista Blanca de Comandos
Sección titulada «Lista Blanca de Comandos»Ambos tipos de ejecutores soportan lista blanca de comandos. Cuando se configura, solo coincidencias exactas de comando están permitidas:
command_whitelist: - ls -la - cat /etc/passwdLos comandos que no están en la lista blanca se rechazan con un error.
API Lua
Sección titulada «API Lua»El Módulo Exec proporciona ejecución de comandos:
local exec = require("exec")
local executor, err = exec.get("app:shell")if err then return nil, err end
local proc = executor:exec("git status", { work_dir = "/app/repo"})
local stdout = proc:stdout_stream()proc:start()local output = stdout:read()proc:wait()
stdout:close()executor:release()Ver También
Sección titulada «Ver También»- Módulo Exec - Referencia de la API Lua
- Process Host - Host que ejecuta procesos Wippy
- Filesystem - Entradas de filesystem usadas como directorios de trabajo