Skip to content

Sandbox Resources

Sandbox resources define the technical infrastructure and environment that powers your lab. These resources provide the compute, networking, storage, and services that participants interact with during hands-on activities.

Docker containers for running applications, services, and development environments.

Additional containers that run alongside main containers for specialized functions.

Isolated Docker networks for container communication and network segmentation.

HTTP/HTTPS ingress controllers for routing external traffic to services.

Interactive shell sessions that connect to containers or VMs.

Web service tabs that proxy HTTP traffic to running applications.

Code editor interfaces for file manipulation and development.

Tabs that display external websites and web applications.

File copying and directory synchronization between host and containers.

Template processing for generating configuration files and scripts.

  • Account - AWS account configuration
  • User - AWS IAM user management
  • Project - Google Cloud project configuration
  • Service Account - GCP service account management
  • User - Google Cloud user management
  • Cluster - Kubernetes cluster provisioning
  • Config - Kubernetes configuration management
  • Cluster - Nomad cluster deployment
  • Job - Nomad job scheduling
  • Helm - Helm chart deployment
  • Repository - Helm repository management
  • Exec - Execute commands on remote systems
  • HTTP - HTTP requests and API interactions
  • Terraform - Infrastructure as code with Terraform
  • Creature - Random creature names
  • ID - Random identifier generation
  • Number - Random number generation
  • Password - Random password generation
  • UUID - UUID generation
  1. Compute: Start with containers for your application stack
  2. Networking: Create isolated networks for different tiers
  3. Storage: Plan file sharing and persistent storage needs
  4. UI Access: Design terminal and service access patterns
  5. Integration: Add cloud services and orchestration as needed
  6. Security: Configure certificates and access controls
  • Resource Isolation: Use separate networks for different application tiers
  • Minimal Containers: Choose lightweight base images for faster startup
  • Health Checks: Configure health checks for reliable service availability
  • Resource Limits: Set appropriate CPU and memory limits
  • Security: Run containers as non-root users when possible
  • Naming: Use consistent, descriptive resource names
# Frontend container
resource "container" "frontend" {
image { name = "nginx:alpine" }
network { id = resource.network.web }
port { local = 80, host = 8080 }
}
# Backend API container
resource "container" "api" {
image { name = "node:16-alpine" }
network { id = resource.network.web }
network { id = resource.network.db }
port { local = 3000 }
}
# Database container
resource "container" "database" {
image { name = "postgres:14" }
network { id = resource.network.db }
volume {
source = "postgres-data"
destination = "/var/lib/postgresql/data"
type = "volume"
}
}
# Main development container
resource "container" "devbox" {
image { name = "instruqt/devbox:latest" }
privileged = true
volume {
source = "./workspace"
destination = "/workspace"
type = "bind"
}
volume {
source = "/var/run/docker.sock"
destination = "/var/run/docker.sock"
type = "bind"
}
}