clouder vm
Manage virtual machines across cloud providers. Automatically dispatches to the correct cloud based on your current context (Azure, AWS, or OVH).
Commands
clouder vm create
Create a virtual machine with interactive prompts.
clouder vm create <name> [OPTIONS]
| Argument | Description |
|---|---|
name (required) | Name for the virtual machine |
| Option | Short | Description |
|---|---|---|
--region | -r | Region to create the VM in |
--resource-group | -g | Resource group (Azure only) |
--vm-size | VM size (Azure only, e.g. Standard_B2s) | |
--admin-user | Admin username (Azure only, default: azureuser) | |
--image | Image: Ubuntu2204, Ubuntu2404, Debian12 (Azure only) |
Azure interactive flow:
- Resource group — pick an existing one or create new. Selecting an existing RG auto-uses its region.
- Region — only prompted if creating a new resource group.
- VM size — pick from common sizes or type a custom one.
- SSH key — pick an existing key from
~/.ssh/or generate a new ed25519 key pair. - Confirmation — review and confirm before creating.
The VM is created with a VNet, subnet, NSG (with SSH port 22 open), public IP, and NIC.
Example:
clouder vm create my-vm
clouder vm create my-vm -r westeurope -g my-rg --vm-size Standard_B4ms
clouder vm ls
List virtual machines in the current context.
clouder vm ls
- Azure: Shows Name, Location, VM Size, State, OS, Resource Group.
- AWS: Shows ID, Name tag, Type, State, Zone, Public IP.
- OVH: Shows ID, Name, Flavor ID, Region, Status.
clouder vm info
Show detailed information for a VM in the current context.
clouder vm info <name>
Current behavior:
- Implemented for AWS contexts.
- Prints instance details including instance id, instance type, state, key pair, VPC/subnet, public/private IP.
- Prints associated ALB details (name, DNS, ARN, target groups) when present.
Example:
clouder ctx set aws <account-id>
clouder vm info oss
clouder vm terminate
Terminate a virtual machine by name.
clouder vm terminate <name> [OPTIONS]
| Argument | Description |
|---|---|
name (required) | Name of the VM to delete |
| Option | Short | Description |
|---|---|---|
--force | -f | Skip confirmation prompt |
Example:
clouder vm terminate my-vm
clouder vm terminate my-vm --force
AWS behavior:
- When deleting an AWS VM, Clouder checks whether one or more ALBs are associated with the instance (via target groups).
- If associations are found, Clouder asks for confirmation to delete ALB resources first.
- On confirmation, ALB(s) are deleted before EC2 termination is requested.
clouder vm add-alb
Create or reuse an AWS Application Load Balancer for a VM and enable HTTPS termination.
clouder vm add-alb <vm-name> --certificate-arn <acm-certificate-arn> [OPTIONS]
| Argument | Description |
|---|---|
vm-name (required) | Name of the AWS VM (EC2 Name tag) to expose through ALB |
| Option | Description |
|---|---|
--certificate-arn | ACM certificate ARN to attach to HTTPS listener (required) |
--target-port | Backend VM HTTP port (default: 80) |
Behavior:
- AWS context only.
- Creates/reuses an internet-facing ALB named
<vm-name>-alb. - Creates/reuses a target group named
<vm-name>-tgand registers the instance. - Configures listener
443/HTTPSwith your ACM certificate and forwards to backend HTTP. - Configures listener
80/HTTPto redirect to HTTPS. - Opens ALB ingress on ports 80 and 443, and allows ALB-to-instance traffic on
--target-port.
Example:
clouder ctx set aws <account-id>
clouder vm add-alb oss --certificate-arn arn:aws:acm:us-east-1:123456789012:certificate/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
clouder vm add-alb oss --certificate-arn <acm-arn> --target-port 8080
Example Workflow
# Set AWS context
clouder ctx set aws <account-id>
# Create a VM (interactive)
clouder vm create my-server
# List VMs
clouder vm ls
# Add HTTPS ALB in front of VM
clouder vm add-alb my-server --certificate-arn <acm-arn>
# SSH into the VM
clouder aws vm-ssh my-server
# Terminate when done
clouder vm terminate my-server