raise¶
| Field | Value |
|---|---|
| Purpose | Infrastructure provisioner — provisions servers and resources from entity requirements |
| Repo | AmadlaOrg/raise |
Commands¶
| Command | Status | Description |
|---|---|---|
raise info |
Active | Output raise metadata as JSON (aggregates plugin entity types) |
raise up |
Active | Create and start infrastructure (VMs, cloud instances) |
raise halt |
Active | Stop running infrastructure without destroying it |
raise destroy |
Active | Remove infrastructure entirely |
raise ssh |
Active | Connect to a provisioned machine |
raise status |
Active | List all managed infrastructure and its state |
raise plugins |
Active | List discovered raise-* plugins |
Dependencies¶
| Library | Purpose |
|---|---|
| LibraryUtils | File operations, configuration |
| LibraryFramework | CLI framework |
Pipeline Position¶
raise sits after doorman (secret resolution) and before lay (application installation). It provisions the infrastructure that applications will run on.
Design¶
raise reads Infrastructure entity declarations and provisions the required resources. It manages the full lifecycle of infrastructure — creating, starting, stopping, and destroying machines — whether they are local VMs or cloud instances. This makes raise the Amadla equivalent of Vagrant, but unified with cloud provisioning under one tool.
Entity Type Routing¶
raise core declares only Infrastructure as its own entity type. Additional entity types are aggregated from installed plugins:
raise infodiscovers allraise-*plugins on PATH and calls each plugin'sinfosubcommand- Plugin-reported entity types (e.g.,
Infrastructure/VMfrom raise-libvirt) are merged into raise'sinfooutput - The amadla orchestrator sees the full set and routes entities accordingly
- raise reads the
providerfield from the Infrastructure entity to dispatch to the correct plugin
This means adding a new plugin (e.g., raise-kubernetes) automatically surfaces its entity types — raise core never needs to change.
Provider Resolution¶
The --provider flag is optional. If omitted, raise reads the provider field from the entity file passed via -f:
raise up my-vm -f infrastructure.hery # auto-detects provider from entity
raise up my-vm --provider libvirt -f vm.hery # explicit provider override
raise uses a plugin system for different providers, translating entity requirements into provider-specific resource definitions.
Plugins¶
| Plugin | Provider | Use Case | Status |
|---|---|---|---|
raise-libvirt |
KVM/QEMU | Local VMs on Linux (most native) | Active |
raise-virtualbox |
VirtualBox | Cross-platform local VMs | Active |
raise-wsl |
WSL2 | Windows Subsystem for Linux | Active |
raise-aws |
AWS EC2 | Cloud instances (EC2 via aws CLI) | Active |
raise-digitalocean |
DigitalOcean | Cloud instances (Droplets via doctl) | Active |
raise-quickemu |
Quickemu | Desktop VMs via quickget/quickemu | Active |
raise-opentofu |
OpenTofu/Terraform | Declarative IaC bridge (tofu CLI) | Active |
raise-xen |
Xen hypervisor | Xen domain images for Amadla Linux | Planned |
raise-oci |
OCI image builder | OCI images for A/B updates | Planned |
raise-hetzner |
Hetzner Cloud | Cloud instances | Stub |
See Raise Plugins for the full plugin protocol and detailed specs.
Example Usage¶
# Local VM workflow (like Vagrant)
raise up my-dev-vm -f infrastructure.hery # Auto-detects provider from entity
raise ssh my-dev-vm --provider libvirt # SSH into the VM
raise halt my-dev-vm --provider libvirt # Stop the VM
raise destroy my-dev-vm --provider libvirt # Remove the VM
# Cloud workflow
raise up my-prod-server -f infrastructure.hery
raise status # List all managed infrastructure
# In a pipeline
amadla run --config tools.hery -f .
Current Status¶
- Core raise tool is complete with
info(aggregated entity types), plugin discovery, provider auto-detection, and lifecycle management - Seven active plugins: libvirt, virtualbox, wsl, aws, digitalocean, quickemu, opentofu
raise-xenandraise-ociplanned for Amadla Linux distro building- Hetzner plugin is a stub