Post-Tyranny-Tech-Infrastru.../clients
Pieter bf4659f662 feat: Implement client registry system (issue #12)
Add comprehensive client registry for tracking all deployed infrastructure:

Registry System:
- Single source of truth in clients/registry.yml
- Tracks status, server specs, versions, maintenance history
- Supports canary deployment workflow
- Automatic updates via deployment scripts

New Scripts:
- scripts/list-clients.sh: List/filter clients (table/json/csv/summary)
- scripts/client-status.sh: Detailed client info with health checks
- scripts/update-registry.sh: Manual registry updates

Updated Scripts:
- scripts/deploy-client.sh: Auto-updates registry on deploy
- scripts/rebuild-client.sh: Auto-updates registry on rebuild
- scripts/destroy-client.sh: Marks clients as destroyed

Documentation:
- docs/client-registry.md: Complete registry reference
- clients/README.md: Quick start guide

Status tracking: pending → deployed → maintenance → destroyed
Role support: canary (dev) and production clients

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-17 20:24:53 +01:00
..
README.md feat: Implement client registry system (issue #12) 2026-01-17 20:24:53 +01:00
registry.yml feat: Implement client registry system (issue #12) 2026-01-17 20:24:53 +01:00

Client Registry

This directory contains the client registry system for tracking all deployed infrastructure.

Files

  • registry.yml - Single source of truth for all clients
    • Deployment status and lifecycle
    • Server specifications
    • Application versions
    • Maintenance history
    • Access URLs

Management Scripts

All scripts are located in ../scripts/:

View Clients

# List all clients
../scripts/list-clients.sh

# Filter by status
../scripts/list-clients.sh --status=deployed

# Filter by role
../scripts/list-clients.sh --role=canary

# Different formats
../scripts/list-clients.sh --format=table    # Default
../scripts/list-clients.sh --format=json     # JSON
../scripts/list-clients.sh --format=csv      # CSV export
../scripts/list-clients.sh --format=summary  # Statistics

View Client Details

# Show detailed status with live health checks
../scripts/client-status.sh <client_name>

Update Registry

The registry is automatically updated by deployment scripts:

  • deploy-client.sh - Creates/updates entry on deployment
  • rebuild-client.sh - Updates entry on rebuild
  • destroy-client.sh - Marks as destroyed

For manual updates:

../scripts/update-registry.sh <client_name> <action> [options]

Registry Structure

Each client entry tracks:

  • Status: pendingdeployedmaintenanceoffboardingdestroyed
  • Role: canary (testing) or production (live)
  • Server: Type, location, IP, Hetzner ID
  • Apps: Installed applications
  • Versions: Application and OS versions
  • Maintenance: Update and backup history
  • URLs: Access endpoints
  • Notes: Operational documentation

Canary Deployment

The dev client has role canary and is used for testing:

# 1. Test on canary first
../scripts/deploy-client.sh dev

# 2. Verify it works
../scripts/client-status.sh dev

# 3. Roll out to production
for client in $(../scripts/list-clients.sh --role=production --format=csv | tail -n +2 | cut -d, -f1); do
    ../scripts/rebuild-client.sh "$client"
done

Documentation

See docs/client-registry.md for:

  • Complete registry structure reference
  • Management script usage
  • Best practices
  • Integration examples
  • Troubleshooting guide

Requirements

  • yq: YAML processor (brew install yq)
  • jq: JSON processor (brew install jq)