# 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**: ```bash # 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**: ```bash 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**: ```bash # 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**: ```bash nickel --version # Should show: 1.15.1 or higher ``` ### SOPS 3.10.2+ SOPS (Secrets OPerationS) provides encrypted configuration and secrets management. **Installation**: ```bash # 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**: ```bash sops --version # Should show: 3.10.2 or higher ``` ### Age 1.2.1+ Age provides modern encryption for secrets used by SOPS. **Installation**: ```bash # 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**: ```bash age --version # Should show: 1.2.1 or higher ``` ### K9s 0.50.6+ K9s provides a terminal UI for managing Kubernetes clusters. **Installation**: ```bash # 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**: ```bash k9s version # Should show: 0.50.6 or higher ``` ## Optional Software ### mdBook For building and serving local documentation. ```bash # Install with Cargo cargo install mdbook # Verify mdbook --version ``` ### Docker or Podman Container runtime for test environments and local development. ```bash # 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. ```bash # 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. ```bash # 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 ```bash # 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: ```bash # 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: - [Installation](installation.md) - Install the Provisioning platform - [Quick Start](quick-start.md) - Deploy your first infrastructure in 5 minutes