Files
infrastructure/llm-server/encoding/ansible/README.md
T
spektr 69930f815a Encoding: Pipeline-Konten, NFS-Mount, Layout und Handover-Simulation umgesetzt und verifiziert.
- workload_accounts: gn-media (GID 970), gn-download (983), gn-dashboard (984);
  gn-media als primäre Gruppe der Pipeline-Konten — AUTH_SYS ueber NFSv4 wirkte
  serverseitig nicht mit Supplementary-Gruppen (Betriebsbefund 30.10.2026);
  Sudoers des Deploy-Kontos auf (ALL:ALL) verbreitert (become_user)
- video_encoding: NFS-Client, Mount-Unit und Pipeline-Layout auf dem Export
  (10.0.0.2:/media/datenhdd3/Encoding -> /var/lib/ghostnet-pipeline, ausserhalb
  der Homes); Layout-Anlage als Dienstkonten wegen root_squash; Verifikation
  der Verzeichnisrechte als gn-encoding (2777/2770/0750/2750, Gruppe 970)
- pve_media_cron: Legacy-Crontab (chown root:root + chmod -R 0777 auf allen
  Medienplatten, alle 10 min) entfernt — haette jedes echte Berechtigungsmodell
  plattgewalzt; Backup unter /var/backups/ghostnet/pve/; verify-production
  prueft das Fehlen ab
- verify-pipeline-handover.yml: Handover-Simulation über alle Identitaeten
  (CT-101-.dlc-Drop -> gn-download -> queue -> gn-encoding -> output/state ->
  gn-dashboard); einmal vollstaendig bestanden (30.10.2026)
- Doku: GNENC-000/001/002, GNAI-017 (6.10/6.11), GNMON-001 auf Stand gebracht

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-10-30 20:47:42 +01:00

53 lines
2.2 KiB
Markdown

# Video encoding Ansible control project
This directory contains the reproducible control project for the CPU-based
video encoding workload on `ghostnet-ki`. It belongs to the `encoding/` task
area of the LLM-Server host root; the shared host baseline lives in
[`../../host/ansible/`](../../host/ansible/README.md) and must be applied first.
`playbooks/video-encoding.yml` applies the `video_encoding` role: it verifies
the locked `gn-encoding` account, enforces CPU-only device isolation, manages
the pipeline NFS mount (`10.0.0.2:/media/datenhdd3/Encoding` at
`/var/lib/ghostnet-pipeline`) and creates and verifies the pipeline
directory layout on the export as the service accounts. No encoder image,
Quadlet, timer or schedule is defined yet; those are open decisions in
[`../../../docs/platform/llm-server/encoding/`](../../../docs/platform/llm-server/encoding/GNENC-000-DOC_Index.md).
`playbooks/verify-pipeline-handover.yml` exercises the file handover between
the pipeline identities (GNENC-002 sections 5 and 6) on the mounted export;
apply `video-encoding.yml` first. The SMB write path from CT-101 (guest root)
is simulated separately on CT-101 (GNAI-017 section 6.10).
## Control-node setup
Use the shared virtual environment at the repository root (see
[`../../host/ansible/README.md`](../../host/ansible/README.md)). The
`ansible-deploy` private key stays outside this repository:
`~/.ssh/id_ed25519_ghostnet_ai_ansible_deploy`.
## Apply and verify
Run the commands from this directory:
```bash
cd llm-server/encoding/ansible
../../../.venv/bin/ansible-playbook \
--inventory inventories/host/hosts.yml \
playbooks/video-encoding.yml \
--syntax-check
../../../.venv/bin/ansible-playbook \
--inventory inventories/host/hosts.yml \
playbooks/video-encoding.yml \
--check --diff \
--private-key ~/.ssh/id_ed25519_ghostnet_ai_ansible_deploy
../../../.venv/bin/ansible-playbook \
--inventory inventories/host/hosts.yml \
playbooks/video-encoding.yml \
--private-key ~/.ssh/id_ed25519_ghostnet_ai_ansible_deploy
```
Run the final command a second time. The second recap must report `changed=0`
and `failed=0`; otherwise the role has not demonstrated convergence.