# ------------------------------------------------------------------------------ # FILE: roles/deploy-vllm/tasks/main.yml # ROLE: deploy-vllm — orchestrator. Phased, idempotent, mirrors the pattern # used by roles/llm-inference and roles/llm-inference-multimodel: # Phase 1: dependencies (Python/venv/vLLM/CUDA/nvidia-smi) # Phase 2: model downloads (~/.vllm-cache, checksum-verified) # Phase 3: systemd service(s) # Phase 4: API key management (1Password) # Phase 5: verification (health + smoke test) # Each phase is a separate task file so a partial re-run / targeted --tags # run is possible without re-reading the whole role. # ------------------------------------------------------------------------------ - name: Compute enabled model list (available to every phase/tag combination) ansible.builtin.set_fact: vllm_enabled_models: "{{ vllm_models | selectattr('enabled', 'equalto', true) | list }}" tags: [vllm, vllm-dependencies, vllm-models, vllm-api-key, vllm-systemd, vllm-verify] - name: Phase 1 — Python & dependencies ansible.builtin.import_tasks: dependencies.yml tags: [vllm, vllm-dependencies] - name: Phase 2 — Model downloads ansible.builtin.import_tasks: models.yml tags: [vllm, vllm-models] - name: Phase 3 — API key management ansible.builtin.import_tasks: api-key.yml tags: [vllm, vllm-api-key] - name: Phase 4 — vLLM systemd service(s) ansible.builtin.import_tasks: systemd.yml tags: [vllm, vllm-systemd] - name: Phase 5 — Verification ansible.builtin.import_tasks: verify.yml tags: [vllm, vllm-verify] when: vllm_service_state == 'started'