Executor
Executor
Abschnitt betitelt „Executor“Befehlsausführer führen externe Prozesse mit kontrollierten Umgebungen aus. Zwei Executor-Typen sind verfügbar: native OS-Prozesse und Docker-Container.
Entry-Typen
Abschnitt betitelt „Entry-Typen“| Kind | Beschreibung |
|---|---|
exec.native | Befehle direkt auf dem Host-OS ausführen |
exec.docker | Befehle in Docker-Containern ausführen |
Native Executor
Abschnitt betitelt „Native Executor“Führt Befehle direkt auf dem Host-Betriebssystem aus.
- 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| Feld | Typ | Standard | Beschreibung |
|---|---|---|---|
default_work_dir | string | - | Arbeitsverzeichnis für alle Befehle |
default_env | map | - | Umgebungsvariablen (mit pro-Befehl env zusammengeführt) |
command_whitelist | string[] | - | Wenn gesetzt, nur diese exakten Befehle erlaubt |
Docker Executor
Abschnitt betitelt „Docker Executor“Führt Befehle in isolierten Docker-Containern aus.
- 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| Feld | Typ | Standard | Beschreibung |
|---|---|---|---|
image | string | erforderlich | Zu verwendendes Docker-Image |
host | string | Unix Socket | Docker-Daemon-URL |
default_work_dir | string | - | Arbeitsverzeichnis im Container |
default_env | map | - | Umgebungsvariablen |
command_whitelist | string[] | - | Erlaubte Befehle (exakter Match) |
network_mode | string | bridge | Netzwerkmodus: host, bridge, none |
volumes | string[] | - | Volume-Mounts: host:container[:ro] |
user | string | - | Benutzer zum Ausführen im Container |
memory_limit | int | 0 | Speicherlimit in Bytes (0 = unbegrenzt) |
cpu_quota | int | 0 | CPU-Quota (100000 = 1 CPU, 0 = unbegrenzt) |
auto_remove | bool | false | Container nach Exit entfernen |
read_only_rootfs | bool | false | Root-Dateisystem schreibgeschützt machen |
no_new_privileges | bool | false | Privilegieneskalation verhindern |
cap_drop | string[] | - | Linux-Capabilities zu entfernen |
cap_add | string[] | - | Linux-Capabilities hinzuzufügen |
pids_limit | int | 0 | Max Prozesse (0 = unbegrenzt) |
tmpfs | map | - | Tmpfs-Mounts für beschreibbare Pfade |
Befehls-Whitelist
Abschnitt betitelt „Befehls-Whitelist“Beide Executor-Typen unterstützen Befehls-Whitelisting. Wenn konfiguriert, sind nur exakte Befehls-Matches erlaubt:
command_whitelist: - ls -la - cat /etc/passwdBefehle, die nicht in der Whitelist sind, werden mit einem Fehler abgelehnt.
Lua-API
Abschnitt betitelt „Lua-API“Das Exec-Modul bietet Befehlsausführung:
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()Siehe auch
Abschnitt betitelt „Siehe auch“- Exec-Modul - Lua-API-Referenz
- Process Host - Host, der Wippy-Prozesse ausführt
- Dateisystem - Als Arbeitsverzeichnisse genutzte Dateisystem-Einträge