Skip to content
/ labctl Public

iximiuz Labs control - start remote microVM playgrounds from the command line.

License

Notifications You must be signed in to change notification settings

iximiuz/labctl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

84 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

iximiuz Labs control - Start Remote microVM Playgrounds From The Command Line

This is a command line tool for iximiuz Labs. You can use it to start and access Linux, Docker, Kubernetes, networking, and other types of DevOps playgrounds. Playgrounds are ephemeral, disposable, and secure enough for happy experimentation.

Some popular playgrounds:

  • ubuntu - A vanilla Ubuntu server.
  • k3s - A multi-node K3s cluster with a load balancer, Helm, and more.
  • docker - A Linux server with Docker engine pre-installed.
  • podman - A Linux server with Podman, a daemonless Docker alternative.
  • mini-lan-ubuntu - Three refined Ubuntu VMs connected into a single network.
  • k8s-client-go - Mini-programs demonstrating Kubernetes client-go usage.
  • golang - A fresh Go version and a loaded VS Code (or Vim) is all you need.

See the full list of playgrounds at labs.iximiuz.com/playgrounds.

🎬 Getting started

Check out this short recording on YouTube to get started:

Getting started with labctl

Installation

The below command will download the latest release to ~/.iximiuz/labctl/bin, adding it to your PATH.

curl -sf https://labs.iximiuz.com/cli/install.sh | sh

Usage

Authentication

First, you need to authenticate the CLI session with iximiuz Labs. The below command will open a browser page with a one-time use URL.

labctl auth login

Starting playgrounds

Once you have authenticated, you can start a new playground with a simple:

labctl playground start docker

You can also automatically open the playground in a browser with:

labctl playground start k3s --open

...or SSH into the playground's machine with:

labctl playground start ubuntu-24-04 --ssh

SSH into a playground

Once you have started a playground, you can access it with:

labctl ssh <playground-id>

...or run a one-off command with:

labctl ssh <playground-id> -- ls -la /

Using IDE (VSCode, JetBrains, etc) to access playgrounds

You can start a playground and open it in your IDE with:

labctl playground start docker --ide

You can use the SSH proxy mode to access playgrounds from your IDE:

labctl ssh-proxy <playground-id>

Example output:

SSH proxy is running on 58279

# Connect from the terminal:
ssh -i ~/.ssh/iximiuz_labs_user ssh://root@127.0.0.1:58279

# Or add the following to your ~/.ssh/config:
Host 65ea1e10f6af43783e69fe68-docker-01
  HostName 127.0.0.1
  Port 58279
  User root
  IdentityFile ~/.ssh/iximiuz_labs_user
  StrictHostKeyChecking no
  UserKnownHostsFile /dev/null

# To access the playground in Visual Studio Code:
code --folder-uri vscode-remote://ssh-remote+127.0.0.1:58279/root


Press Ctrl+C to stop

After adding the above piece to your SSH config, you'll be able to develop right on the playground machine using the Visual Studio Code Remote - SSH extension or its JetBrains counterpart. Check out this short recording on YouTube demonstrating the use case.

Port forwarding

You can securely expose any service (HTTP, TCP, UDP, etc) running in the playground to your local machine with:

labctl port-forward <playground-id> -L <local-port>:<remote-port>

You can also expose locally running services to the playground using remote port forwarding (via SSH):

labctl ssh-proxy --address <local-proxy-address> <playground-id>

ssh -i ~/.ssh/iximiuz_labs_user \
  -R <remote-host>:<remote-port>:<local-host>:<local-port> \
  ssh://root@<local-proxy-address>

Listing and stopping playgrounds

You can list recent playgrounds with:

labctl playground list

And stop a running playground with:

labctl playground stop <playground-id>

Signing out and deleting the CLI

You can sign out and delete the CLI session with:

labctl auth logout

To uninstall the CLI, just remove the ~/.iximiuz/labctl directory.

License

APACHE-2.0