--- # ------------------------------------------------------------------------------ # FILE: roles/llm-inference/tasks/serve.yml # DESCRIPTION: Phase 5 — systemd vllm-serve service. # Deploys the service unit, enables on boot, starts it, and # health-checks the OpenAI-compatible API endpoint. # ------------------------------------------------------------------------------ - name: Deploy vllm-serve systemd service unit ansible.builtin.template: src: vllm-serve.service.j2 dest: /etc/systemd/system/vllm-serve.service owner: root group: root mode: "0644" notify: - reload systemd - restart vllm-serve - name: Flush handlers to reload systemd before enabling service ansible.builtin.meta: flush_handlers - name: Enable and start vllm-serve ansible.builtin.systemd: name: vllm-serve state: started enabled: true daemon_reload: true - name: Wait for vLLM API to become available (model load can take ~60s) ansible.builtin.uri: url: "http://localhost:{{ llm_serve_port }}/health" status_code: 200 register: vllm_health retries: 30 delay: 10 until: vllm_health.status == 200 - name: Smoke-test — list available models ansible.builtin.uri: url: "http://localhost:{{ llm_serve_port }}/v1/models" status_code: 200 return_content: true register: vllm_models - name: Print available models ansible.builtin.debug: msg: "vLLM serving: {{ vllm_models.json.data | map(attribute='id') | list }}"