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>
97 lines
2.4 KiB
Markdown
97 lines
2.4 KiB
Markdown
# Client Registry
|
|
|
|
This directory contains the client registry system for tracking all deployed infrastructure.
|
|
|
|
## Files
|
|
|
|
- **[registry.yml](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/`](../scripts/):
|
|
|
|
### View Clients
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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:
|
|
```bash
|
|
../scripts/update-registry.sh <client_name> <action> [options]
|
|
```
|
|
|
|
## Registry Structure
|
|
|
|
Each client entry tracks:
|
|
- **Status**: `pending` → `deployed` → `maintenance` → `offboarding` → `destroyed`
|
|
- **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:
|
|
|
|
```bash
|
|
# 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](../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`)
|