- 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>
53 lines
2.2 KiB
Markdown
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.
|