← ClaudeAtlas

sales-demos-serve-modellisted

Deploy a model on the GPU cluster and publish the inference endpoint to AAP. Runs playbooks/serve_model.yml against --limit gpu,<env>. Creates namespace, downloads weights to a PVC, deploys a vLLM ServingRuntime with RHOAI/KServe, exposes an authenticated Route, and publishes the credential to AAP as 'Sales Demos - Inference Endpoint'. TRIGGER when: the user wants to serve a model, deploy AI/inference, set up the GPU cluster, or get a model running. SKIP: if the model is already serving and the user wants to change model parameters — that is teardown then re-serve.
ericcames/sales.demos · ★ 1 · AI & Automation · score 67
Install: claude install-skill ericcames/sales.demos
# sales-demos-serve-model Phase 1 of #661. Deploys a model on the GPU cluster and publishes the endpoint to AAP so job templates can call inference. This skill contains **no logic**. All the work is in [`playbooks/serve_model.yml`](../../../playbooks/serve_model.yml), which creates all K8s resources on the GPU cluster and publishes the credential to AAP. See `CLAUDE.md` → *Skills and playbooks*. ## Preflight Checks ```bash # 1. Vault password exists test -f "${SALES_DEMOS_VAULT_PASS:-$HOME/secrets/.vault_pass_sales_demos}" \ || { echo "FAIL: vault password file not found"; exit 1; } # 2. GPU connection is configured (local.yml or connection.yml) python3 -c " import yaml, sys, os gvd = os.path.join(os.path.dirname(__file__), '..', '..', '..', 'inventory', 'group_vars', 'gpu') for f in ['local.yml', 'connection.yml']: p = os.path.join(gvd, f) if os.path.exists(p): d = yaml.safe_load(open(p)) url = d.get('openshift_api_url', '') if '<id>' not in url and url: print(f'OK: GPU cluster configured in {f}'); sys.exit(0) print('FAIL: GPU cluster not configured — copy local.yml.example to local.yml and fill in your cluster values') sys.exit(1) " 2>/dev/null || echo "Check GPU connection manually" # 3. kubernetes.core collection is installed python3 -c "import ansible; from ansible.utils.collection_loader import AnsibleCollectionConfig" 2>/dev/null \ && ansible-galaxy collection list kubernetes.core 2>/dev/null | grep -q kubernetes.co