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