blumeops/argocd/manifests
Erich Blume 14ca0160ba Migrate devpi from minikube to indri (launchd) (#341)
## 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
2026-04-29 13:38:36 -07:00
..
1password-connect
alloy-k8s Migrate devpi from minikube to indri (launchd) (#341) 2026-04-29 13:38:36 -07:00
alloy-ringtail
alloy-tracing-ringtail Run alloy-tracing as root for eBPF capabilities 2026-04-18 08:42:26 -07:00
argocd C0: docs — default argocd login to --sso; drop extraneous --grpc-web 2026-04-21 10:43:21 -07:00
authentik C0: remove argocd OIDC client_secret wiring 2026-04-21 10:38:26 -07:00
cloudnative-pg
cv
databases
docs Update docs release to v1.16.0 2026-04-18 10:00:54 -07:00
external-secrets
forgejo-runner chore: repoint runner-job-image tag at CI-built v0.20.6-50f8c2a 2026-04-21 08:38:33 -07:00
frigate C0: bump frigate-notify to v0.5.4-e928054-nix (workdir fix) 2026-04-21 09:44:24 -07:00
grafana Address 6 critical Prowler IaC findings (mute + grafana RBAC tighten) (#340) 2026-04-29 10:43:32 -07:00
grafana-config Move forge-specific latency panels to Forgejo dashboard 2026-04-17 15:13:40 -07:00
homepage
immich
kingfisher
kiwix Update kiwix-serve to Dagger-built container (Alpine 3.23) 2026-04-17 14:27:42 -07:00
kube-state-metrics
kube-state-metrics-ringtail
loki
mealie
miniflux Update navidrome, miniflux, forgejo-runner image tags to Alpine 3.23 builds [main] 2026-04-16 15:37:30 -07:00
navidrome Update navidrome, miniflux, forgejo-runner image tags to Alpine 3.23 builds [main] 2026-04-16 15:37:30 -07:00
ntfy
nvidia-device-plugin
ollama Upgrade ollama from 0.17.5 to 0.20.4 2026-04-09 06:42:05 -07:00
paperless Fix paperless redis: use upstream valkey instead of amd64-only nix image 2026-04-13 17:48:20 -07:00
prometheus
prowler C0: prowler — rebuild image against main HEAD 2026-04-29 10:49:27 -07:00
tailscale-operator
tailscale-operator-base Switch Fly proxy to upstream keepalive pools (#337) 2026-04-17 16:39:52 -07:00
tailscale-operator-ringtail
tempo
teslamate Document devpi cold cache failure mode and deploy teslamate v3.0.0-08c698e 2026-04-14 07:38:06 -07:00
torrent Deploy transmission containers from Dagger builds 2026-04-15 11:34:28 -07:00
unpoller