provisioning/docs/src/getting-started/prerequisites.md
2026-01-17 03:58:28 +00:00

6.4 KiB

Prerequisites

Before installing the Provisioning platform, ensure your system meets the following requirements.

Required Software

Nushell 0.109.1+

Nushell is the primary shell and scripting environment for the platform.

Installation:

# macOS (Homebrew)
brew install nushell

# Linux (Cargo)
cargo install nu

# From source
git clone  [https://github.com/nushell/nushell](https://github.com/nushell/nushell)
cd nushell
cargo install --path .

Verify installation:

nu --version
# Should show: 0.109.1 or higher

Nickel 1.15.1+

Nickel is the infrastructure-as-code language providing type-safe configuration with lazy evaluation.

Installation:

# macOS (Homebrew)
brew install nickel

# Linux (Cargo)
cargo install nickel-lang-cli

# From source
git clone  [https://github.com/tweag/nickel](https://github.com/tweag/nickel)
cd nickel
cargo install --path cli

Verify installation:

nickel --version
# Should show: 1.15.1 or higher

SOPS 3.10.2+

SOPS (Secrets OPerationS) provides encrypted configuration and secrets management.

Installation:

# macOS (Homebrew)
brew install sops

# Linux (binary download)
wget  [https://github.com/getsops/sops/releases/download/v3.10.2/sops-v3.10.2.linux.amd64](https://github.com/getsops/sops/releases/download/v3.10.2/sops-v3.10.2.linux.amd64)
sudo mv sops-v3.10.2.linux.amd64 /usr/local/bin/sops
sudo chmod +x /usr/local/bin/sops

Verify installation:

sops --version
# Should show: 3.10.2 or higher

Age 1.2.1+

Age provides modern encryption for secrets used by SOPS.

Installation:

# macOS (Homebrew)
brew install age

# Linux (binary download)
wget  [https://github.com/FiloSottile/age/releases/download/v1.2.1/age-v1.2.1-linux-amd64.tar.gz](https://github.com/FiloSottile/age/releases/download/v1.2.1/age-v1.2.1-linux-amd64.tar.gz)
tar xzf age-v1.2.1-linux-amd64.tar.gz
sudo mv age/age /usr/local/bin/
sudo chmod +x /usr/local/bin/age

Verify installation:

age --version
# Should show: 1.2.1 or higher

K9s 0.50.6+

K9s provides a terminal UI for managing Kubernetes clusters.

Installation:

# macOS (Homebrew)
brew install derailed/k9s/k9s

# Linux (binary download)
wget  [https://github.com/derailed/k9s/releases/download/v0.50.6/k9s_Linux_amd64.tar.gz](https://github.com/derailed/k9s/releases/download/v0.50.6/k9s_Linux_amd64.tar.gz)
tar xzf k9s_Linux_amd64.tar.gz
sudo mv k9s /usr/local/bin/

Verify installation:

k9s version
# Should show: 0.50.6 or higher

Optional Software

mdBook

For building and serving local documentation.

# Install with Cargo
cargo install mdbook

# Verify
mdbook --version

Docker or Podman

Container runtime for test environments and local development.

# Docker (macOS)
brew install --cask docker

# Podman (Linux)
sudo apt-get install podman

# Verify
docker --version
# or
podman --version

Cargo (Rust)

Required for building platform services and native plugins.

# Install Rust and Cargo
curl --proto '=https' --tlsv1.2 -sSf  [https://sh.rustup.rs](https://sh.rustup.rs) | sh

# Verify
cargo --version

Git

Version control for workspace management and configuration.

# Most systems have Git pre-installed
git --version

# Install if needed (macOS)
brew install git

# Install if needed (Linux)
sudo apt-get install git

System Requirements

Minimum Hardware

Development Workstation:

  • CPU: 2 cores
  • RAM: 4 GB
  • Disk: 20 GB available space
  • Network: Internet connection for provider APIs

Production Control Plane:

  • CPU: 4 cores
  • RAM: 8 GB
  • Disk: 50 GB available space (SSD recommended)
  • Network: Stable internet connection, public IP optional

Supported Operating Systems

Primary Support:

  • macOS 12.0+ (Monterey or newer)
  • Linux distributions with kernel 5.0+
    • Ubuntu 20.04 LTS or newer
    • Debian 11 or newer
    • Fedora 35 or newer
    • RHEL 8 or newer

Limited Support:

  • Windows 10/11 via WSL2 (Windows Subsystem for Linux)

Network Requirements

Outbound Access:

  • HTTPS (443) to cloud provider APIs
  • HTTPS (443) to GitHub (for version updates)
  • SSH (22) for server management

Inbound Access (optional, for platform services):

  • Port 8080: HTTP API
  • Port 8081: MCP server
  • Port 5000: Orchestrator service

Cloud Provider Access

At least one cloud provider account with API credentials:

UpCloud:

  • API username and password
  • Account with sufficient quota for servers

AWS:

  • AWS Access Key ID and Secret Access Key
  • IAM permissions for EC2, VPC, EBS operations
  • Account with sufficient EC2 quota

Local Provider:

  • Docker or Podman installed
  • Sufficient local system resources

Permission Requirements

User Permissions

Standard User (recommended):

  • Read/write access to workspace directory
  • Ability to create symlinks for CLI installation
  • SSH key generation capability

Administrative Tasks (optional):

  • Installing CLI to /usr/local/bin (requires sudo)
  • Installing system-wide dependencies
  • Configuring system services

File System Permissions

# Workspace directory
chmod 755 ~/provisioning-workspace

# Configuration files
chmod 600 ~/.config/provisioning/user_config.yaml
chmod 600 ~/.ssh/provisioning_*

# Executable permissions for CLI
chmod +x /path/to/provisioning/core/cli/provisioning

Verification Checklist

Before proceeding to installation, verify all prerequisites:

# Check required tools
nu --version              # 0.109.1+
nickel --version          # 1.15.1+
sops --version            # 3.10.2+
age --version             # 1.2.1+
k9s version               # 0.50.6+

# Check optional tools
mdbook --version          # Latest
docker --version          # Latest
cargo --version           # Latest
git --version             # Latest

# Verify system resources
nproc                     # CPU cores (2+ minimum)
free -h                   # RAM (4GB+ minimum)
df -h ~                   # Disk space (20GB+ minimum)

# Test network connectivity
curl -I  [https://api.github.com](https://api.github.com)
curl -I  [https://hub.upcloud.com](https://hub.upcloud.com)  # UpCloud API
curl -I  [https://ec2.amazonaws.com](https://ec2.amazonaws.com)  # AWS API

Next Steps

Once all prerequisites are met, proceed to: