Executor
Executor
Заголовок раздела «Executor»Исполнители команд запускают внешние процессы в контролируемом окружении. Доступны два типа: нативные процессы ОС и Docker-контейнеры.
Типы записей
Заголовок раздела «Типы записей»| Тип | Описание |
|---|---|
exec.native | Выполнение команд напрямую в ОС |
exec.docker | Выполнение команд внутри Docker-контейнеров |
Нативный исполнитель
Заголовок раздела «Нативный исполнитель»Запускает команды напрямую в операционной системе.
- 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| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
default_work_dir | string | - | Рабочая директория для всех команд |
default_env | map | - | Переменные окружения (объединяются с per-command env) |
command_whitelist | string[] | - | Если задан, разрешены только указанные команды |
Docker-исполнитель
Заголовок раздела «Docker-исполнитель»Запускает команды внутри изолированных Docker-контейнеров.
- 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| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
image | string | обязательно | Docker-образ |
host | string | unix socket | URL Docker daemon |
default_work_dir | string | - | Рабочая директория внутри контейнера |
default_env | map | - | Переменные окружения |
command_whitelist | string[] | - | Разрешённые команды (точное совпадение) |
network_mode | string | bridge | Сетевой режим: host, bridge, none |
volumes | string[] | - | Монтирование томов: host:container[:ro] |
user | string | - | Пользователь внутри контейнера |
memory_limit | int | 0 | Лимит памяти в байтах (0 = без ограничений) |
cpu_quota | int | 0 | Квота CPU (100000 = 1 CPU, 0 = без ограничений) |
auto_remove | bool | false | Удалить контейнер после завершения |
read_only_rootfs | bool | false | Сделать корневую ФС только для чтения |
no_new_privileges | bool | false | Запретить повышение привилегий |
cap_drop | string[] | - | Linux capabilities для удаления |
cap_add | string[] | - | Linux capabilities для добавления |
pids_limit | int | 0 | Макс. процессов (0 = без ограничений) |
tmpfs | map | - | Tmpfs-монтирования для записываемых путей |
Белый список команд
Заголовок раздела «Белый список команд»Оба типа исполнителей поддерживают белый список команд. При настройке разрешены только точные совпадения:
command_whitelist: - ls -la - cat /etc/passwdКоманды не из списка отклоняются с ошибкой.
Lua API
Заголовок раздела «Lua API»Модуль Exec предоставляет выполнение команд:
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()См. также
Заголовок раздела «См. также»- Модуль Exec — справочник Lua API
- Process Host — хост, исполняющий процессы Wippy
- Файловая система — записи файловой системы, используемые как рабочие каталоги