--- # ------------------------------------------------------------------------------ # FILE: roles/llm-inference-multimodel/tasks/main.yml # DESCRIPTION: Entry point — imports one task file per phase. # Phases are additive; re-running the full playbook is always # safe (idempotent). Use --tags to run a specific phase subset: # --tags discover,models,systemd,firewall,verify # # IMPORTANT: Phase 2 (systemd) deploys but does NOT start either service. # Phase 4 (verify) is what starts + smoke-tests them. This lets # Ryan review "systemd units land, nothing running yet" as a # distinct, revertable checkpoint before anything touches the # live GPU/VRAM state. # ------------------------------------------------------------------------------ # Phase 0 — Discover (read-only; confirm how the existing Gemma llama-server # is actually managed today before assuming a systemd unit exists) - import_tasks: discover.yml tags: [discover] # Phase 1 — Models (idempotent GGUF download, size-check guard) - import_tasks: models.yml tags: [models] # Phase 2 — Systemd (template + deploy both unit files, do NOT auto-start) - import_tasks: systemd.yml tags: [systemd] # Phase 3 — Firewall (scope :8001 and reconsider :8000 exposure) - import_tasks: firewall.yml tags: [firewall] # Phase 4 — Verify (start both services, curl smoke test, nvidia-smi VRAM check) - import_tasks: verify.yml tags: [verify] # Phase R — Router shadow deployment (port 8003) # Gates on llm_router_enabled (default false — complete no-op until enabled). # Use playbooks/day1_deploy_llm_router_shadow.yml which sets llm_router_enabled: true. # # NOTE: This phase uses include_tasks (dynamic) rather than import_tasks (static) # to prevent Ansible's tag-inheritance from applying the router_* tags to ALL # tasks in all other phases. With import_tasks, every task in every phase gets # the parent tag set merged in, making --tags router_* run the full role. # include_tasks evaluates tags at runtime, keeping phase isolation clean. # Trade-off: include_tasks does NOT forward tags to child tasks' own tag sets, # so individual router sub-phase tags (router_systemd, router_firewall, etc.) # must be applied via --tags on the CLI when running in isolation. # Added 2026-08-12 (t_0cca74a2): router mode migration — War Machine. - include_tasks: router.yml when: llm_router_enabled | default(false) tags: [always]