Skip to content

Overview

eberrigan edited this page Jun 11, 2025 · 1 revision

LabLink Platform Overview

The LabLink Platform enables dynamic VM allocation and management through a centralized Flask-based allocator server deployed on AWS EC2. It is designed for simplicity, extensibility, and automation using Terraform and GitHub Actions.

Key Components

  • Allocator Server

    • Flask web server hosted on EC2
    • Serves a user form to request VM instances
    • Deployed via Terraform + GitHub Actions
  • Client VMs

    • Spawned dynamically by the allocator
    • Run containers preconfigured for specific tasks
    • Use Docker with GPU/NVIDIA setup as needed
  • Infrastructure as Code

    • EC2, Security Groups, Elastic IPs, and SSH Keys are all provisioned via Terraform
    • Supports environments: dev, test, and prod

Deployment Workflow

  • Terraform provisions the allocator server and its networking (SG, EIP, Key Pair)
  • GitHub Actions:
    • Triggers on main, test, or workflow_dispatch
    • Determines environment and initializes Terraform accordingly
    • Automatically saves the generated .pem key for SSH

SSH Key Management

  • Each environment has its own key: lablink-key-${resource_suffix}
  • Key pairs are created via Terraform and stored as outputs for GitHub to save
  • Ensure .pem file is saved securely and used with correct file permissions (chmod 600)
Clone this wiki locally