50 lines
1.4 KiB
Markdown
50 lines
1.4 KiB
Markdown
# Data Model: VPS Image Migration
|
|
|
|
## Host Profile
|
|
|
|
- **Purpose**: Defines a named system configuration (e.g., vps).
|
|
- **Key fields**:
|
|
- `name` (string, unique)
|
|
- `target_environment` (string, e.g., Linode)
|
|
- `services_required` (list of service identifiers)
|
|
- `secrets_required` (list of secret identifiers)
|
|
|
|
## Image Artifact
|
|
|
|
- **Purpose**: Represents a build output used to provision a VPS.
|
|
- **Key fields**:
|
|
- `image_type` (string, Linode-compatible)
|
|
- `build_reference` (string, build timestamp or revision)
|
|
- `host_profile` (reference to Host Profile)
|
|
|
|
## Bootstrap Secret Material
|
|
|
|
- **Purpose**: Material required to unlock secrets on the host.
|
|
- **Key fields**:
|
|
- `bootstrap_method` (enum: generated-on-host)
|
|
- `recipient_public_key` (string)
|
|
- `enrollment_status` (enum: pending, enrolled)
|
|
|
|
## Deployment Target
|
|
|
|
- **Purpose**: The environment where the image is launched.
|
|
- **Key fields**:
|
|
- `provider` (string)
|
|
- `region` (string)
|
|
- `instance_id` (string)
|
|
|
|
## Rebuild Trigger
|
|
|
|
- **Purpose**: Represents an authorized rebuild action for the VPS.
|
|
- **Key fields**:
|
|
- `actor` (string)
|
|
- `requested_at` (datetime)
|
|
- `status` (enum: queued, running, succeeded, failed)
|
|
|
|
## Relationships
|
|
|
|
- Host Profile 1..* Image Artifact
|
|
- Host Profile 1..* Bootstrap Secret Material
|
|
- Deployment Target 1..1 Image Artifact
|
|
- Rebuild Trigger *..1 Host Profile
|