Files
infrastructure/llm-server/encoding/ansible
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
..

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/ 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/.

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). 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:

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.