Сервис состоит из dispatcher-а, набора typed runners и artifact pipeline. Все модули используют одну базу execution-plane-service, потому что attempts, leases, statuses и artifact refs являются одним consistency boundary.
dispatcher
dispatcher - центральный модуль execution lifecycle.
Ответственность:
- валидирует
JobSpecна уровне execution contract; - создает
execution_attempt; - выбирает runner по
job.type,runner_requirementsи доступности; - выдает lease конкретному runner instance;
- принимает heartbeat и progress events;
- применяет timeout/cancellation policy;
- фиксирует final attempt status;
- доставляет callback в
control-plane-service; - публикует events в Kafka.
Dispatcher не читает scenario registry и не знает бизнес-семантику node.
ansible-runner
Запускает Ansible playbooks из approved package.
Поддерживаемые операции:
ansible.playbook.run;ansible.role.run;ansible.inventory.validate;ansible.check_mode.run.
Входы:
- package ref;
- playbook path из allowlist;
- inventory artifact или generated inventory;
- variables без secret values;
- Vault secret refs;
- target resource bindings.
Выходы:
- raw Ansible event stream;
- recap summary;
- changed/failed host list;
- generated facts;
- evidence refs для verified postconditions.
Ограничения:
- запрет произвольных local scripts вне package allowlist;
- secret masking в stdout/stderr;
- обязательный artifact bundle с event stream.
kubernetes-runner
Выполняет Kubernetes API actions.
Поддерживаемые операции:
kubernetes.manifest.apply;kubernetes.manifest.delete;kubernetes.wait;kubernetes.rollout.status;kubernetes.resource.patch;kubernetes.resource.read.
Входы:
- cluster access ref;
- namespace policy;
- manifests или artifact refs;
- field manager;
- dry-run flag;
- wait conditions.
Выходы:
- apply result;
- object refs;
- diff summary;
- wait evidence;
- Kubernetes events snapshot.
Ограничения:
- доступ к cluster credentials только через Vault;
- namespace и cluster scope должны пройти policy check;
- destructive actions требуют явного флага в
JobSpec.
helm-runner
Выполняет Helm lifecycle.
Поддерживаемые операции:
helm.install;helm.upgrade;helm.rollback;helm.uninstall;helm.test;helm.template.
Входы:
- chart ref;
- release name;
- namespace;
- values artifact refs;
- atomic/wait/timeouts;
- repository credentials refs.
Выходы:
- release revision;
- rendered manifests bundle;
- Helm notes;
- test result evidence;
- Kubernetes object refs.
Ограничения:
- chart source должен быть trusted или marketplace-approved;
- values с секретами передаются через Vault refs или generated secret refs;
- rollback выполняется только по explicit command от control-plane.
opentofu-runner
Выполняет IaC workflow для infrastructure resources.
Поддерживаемые операции:
opentofu.plan;opentofu.apply;opentofu.destroy;opentofu.output;opentofu.state.inspect.
Входы:
- module ref;
- backend config ref;
- variable artifact refs;
- provider credential refs;
- plan artifact ref для apply.
Выходы:
- plan file ref;
- plan summary;
- apply output refs;
- state version ref;
- generated resource identifiers.
Ограничения:
applyдолжен ссылаться на approved plan или явный operation policy;- state backend credentials только через Vault;
- destroy требует elevated operation policy.
ssh-runner
Выполняет ограниченные remote commands на nodes.
Поддерживаемые операции:
ssh.command.run;ssh.file.upload;ssh.file.download;ssh.service.restart;ssh.system.fact.collect.
Входы:
- node resource bindings;
- command template id из allowlist;
- arguments;
- connection credential refs;
- timeout и sudo policy.
Выходы:
- exit code;
- stdout/stderr refs;
- collected facts;
- service status evidence.
Ограничения:
- нет generic uncontrolled shell;
- команды описываются как templates с typed arguments;
- sudo policy задается явно и audit-able.
verification-runner
Проверяет postconditions и output contracts.
Поддерживаемые операции:
verify.http.endpoint;verify.tcp.connect;verify.kubernetes.condition;verify.postgres.ready;verify.resource.capability;verify.custom.probe.
Входы:
- expected output contract;
- target refs;
- probe credentials refs;
- retry/backoff policy;
- evidence requirements.
Выходы:
- evidence refs;
- probe samples;
- assertion results;
- recommended failure category.
Ограничения:
- verification-runner не исправляет состояние;
- AI remediation или repair jobs добавляются в plan через
PlanPatchвcontrol-plane-service.
artifact-worker
Нормализует все output в единый artifact format.
Ответственность:
- собирает log chunks;
- маскирует секреты;
- строит artifact manifest;
- пишет bundles в S3/MinIO;
- сохраняет artifact refs в Postgres;
- публикует
artifact.created; - поддерживает retention policy.
Artifact worker не трактует бизнес-результат. Он только гарантирует, что результат можно показать в UI, скачать и использовать как evidence.