## Summary Devpi was crash-looping under memory pressure on the minikube StatefulSet, breaking the Python toolchain across the repo (`mise run docs-mikado`, `prek`, every `uv pip install`). It moves to indri as a native LaunchAgent. ## What changed - **New ansible role** `ansible/roles/devpi/`: installs `devpi-server` + `devpi-web` into a uv-managed venv, initializes the server-dir on first run via 1Password root password, runs as a LaunchAgent (`mcquack.eblume.devpi`) bound to `127.0.0.1:3141`. Bootstraps from upstream PyPI (so devpi can install itself on a fresh box). - **Caddy**: `pypi.ops.eblu.me` now proxies to `http://localhost:3141`. - **Playbook**: `indri.yml` gains pre_tasks for the root password and the new role. - **service-versions.yaml**: devpi flipped from `type: argocd` to `type: ansible`. - **ArgoCD**: removed `apps/devpi.yaml` and `manifests/devpi/`. The in-cluster Application, namespace, and PVC have been deleted. - **Docs**: new how-to `docs/how-to/operations/devpi-on-indri.md`; `restart-indri.md` lists devpi in the LaunchAgent stop list. ## Already deployed (live on indri) - Service running: `launchctl list mcquack.eblume.devpi` → PID 53888 - `curl https://pypi.ops.eblu.me/+api` returns 200 ✅ - `mise run docs-mikado` works again ✅ - 1.0G of cached PyPI data was migrated from the PVC to `~erichblume/devpi/server-dir/` - Minikube namespace and PVC fully reclaimed ## Test plan - [ ] `mise run services-check` (after merge) - [ ] CI workflows that use devpi succeed - [ ] No regressions in tools that depend on `pypi.ops.eblu.me` (prek, uv-script tasks, dagger pipelines) ## Context This is the C1 prelude to a planned C2 chain (`mikado/retire-minikube-indri`) to retire minikube on indri entirely. Doing devpi as a standalone C1 was the right call because (a) it was urgent — it was breaking the toolchain — and (b) it shakes out the migration recipe before we commit to a multi-leaf chain. Reviewed-on: #341
21 lines
689 B
YAML
21 lines
689 B
YAML
---
|
|
# devpi PyPI caching mirror (native launchd, replaces minikube StatefulSet)
|
|
|
|
devpi_home: /Users/erichblume/devpi
|
|
devpi_venv: "{{ devpi_home }}/venv"
|
|
devpi_server_dir: "{{ devpi_home }}/server-dir"
|
|
devpi_binary: "{{ devpi_venv }}/bin/devpi-server"
|
|
devpi_init_binary: "{{ devpi_venv }}/bin/devpi-init"
|
|
|
|
devpi_python_version: "3.12"
|
|
devpi_server_version: "6.19.3"
|
|
devpi_web_version: "5.0.2"
|
|
|
|
devpi_host: 127.0.0.1
|
|
devpi_port: 3141
|
|
devpi_outside_url: "https://pypi.ops.eblu.me"
|
|
|
|
devpi_log_dir: /Users/erichblume/Library/Logs
|
|
|
|
# uv binary on indri — mise shim so version bumps via `mise upgrade uv` flow through transparently
|
|
devpi_uv_binary: /Users/erichblume/.local/share/mise/shims/uv
|