provisioning/docs/src/getting-started/installation-guide.md

536 lines
11 KiB
Markdown
Raw Normal View History

2026-01-14 04:53:21 +00:00
# Installation Guide
This guide will help you install Infrastructure Automation on your machine and get it ready for use.
## What You'll Learn
- System requirements and prerequisites
- Different installation methods
- How to verify your installation
- Setting up your environment
- Troubleshooting common installation issues
## System Requirements
### Operating System Support
- **Linux**: Any modern distribution (Ubuntu 20.04+, CentOS 8+, Debian 11+)
- **macOS**: 11.0+ (Big Sur and newer)
- **Windows**: Windows 10/11 with WSL2
### Hardware Requirements
| Component | Minimum | Recommended |
| ----------- | --------- | ------------- |
| CPU | 2 cores | 4+ cores |
| RAM | 4 GB | 8+ GB |
| Storage | 2 GB free | 10+ GB free |
| Network | Internet connection | Broadband connection |
### Architecture Support
- **x86_64** (Intel/AMD 64-bit) - Full support
- **ARM64** (Apple Silicon, ARM servers) - Full support
## Prerequisites
Before installation, ensure you have:
1. **Administrative privileges** - Required for system-wide installation
2. **Internet connection** - For downloading dependencies
3. **Terminal/Command line access** - Basic command line knowledge helpful
### Pre-installation Checklist
2026-01-14 04:53:58 +00:00
```bash
2026-01-14 04:53:21 +00:00
# Check your system
uname -a # View system information
df -h # Check available disk space
curl --version # Verify internet connectivity
```
## Installation Methods
### Method 1: Package Installation (Recommended)
This is the easiest method for most users.
#### Step 1: Download the Package
2026-01-14 04:53:58 +00:00
```bash
2026-01-14 04:53:21 +00:00
# Download the latest release package
wget https://releases.example.com/provisioning-latest.tar.gz
# Or using curl
curl -LO https://releases.example.com/provisioning-latest.tar.gz
```
#### Step 2: Extract and Install
2026-01-14 04:53:58 +00:00
```bash
2026-01-14 04:53:21 +00:00
# Extract the package
tar xzf provisioning-latest.tar.gz
# Navigate to extracted directory
cd provisioning-*
# Run the installation script
sudo ./install-provisioning
```
The installer will:
- Install to `/usr/local/provisioning`
- Create a global command at `/usr/local/bin/provisioning`
- Install all required dependencies
- Set up configuration templates
### Method 2: Container Installation
For containerized environments or testing.
#### Using Docker
2026-01-14 04:53:58 +00:00
```bash
2026-01-14 04:53:21 +00:00
# Pull the provisioning container
docker pull provisioning:latest
# Create a container with persistent storage
docker run -it --name provisioning-setup
-v ~/provisioning-data:/data
provisioning:latest
# Install to host system (optional)
docker cp provisioning-setup:/usr/local/provisioning ./
sudo cp -r ./provisioning /usr/local/
sudo ln -sf /usr/local/provisioning/bin/provisioning /usr/local/bin/provisioning
```
#### Using Podman
2026-01-14 04:53:58 +00:00
```bash
2026-01-14 04:53:21 +00:00
# Similar to Docker but with Podman
podman pull provisioning:latest
podman run -it --name provisioning-setup
-v ~/provisioning-data:/data
provisioning:latest
```
### Method 3: Source Installation
For developers or custom installations.
#### Prerequisites for Source Installation
- **Git** - For cloning the repository
- **Build tools** - Compiler toolchain for your platform
#### Installation Steps
2026-01-14 04:53:58 +00:00
```bash
2026-01-14 04:53:21 +00:00
# Clone the repository
git clone https://github.com/your-org/provisioning.git
cd provisioning
# Run installation from source
./distro/from-repo.sh
# Or if you have development environment
./distro/pack-install.sh
```
### Method 4: Manual Installation
For advanced users who want complete control.
2026-01-14 04:53:58 +00:00
```bash
2026-01-14 04:53:21 +00:00
# Create installation directory
sudo mkdir -p /usr/local/provisioning
# Copy files (assumes you have the source)
sudo cp -r ./* /usr/local/provisioning/
# Create global command
sudo ln -sf /usr/local/provisioning/core/nulib/provisioning /usr/local/bin/provisioning
# Install dependencies manually
./install-dependencies.sh
```
## Installation Process Details
### What Gets Installed
The installation process sets up:
#### 1. Core System Files
2026-01-14 04:53:58 +00:00
```bash
2026-01-14 04:53:21 +00:00
/usr/local/provisioning/
├── core/ # Core provisioning logic
├── providers/ # Cloud provider integrations
├── taskservs/ # Infrastructure services
├── cluster/ # Cluster configurations
├── schemas/ # Configuration schemas (Nickel)
├── templates/ # Template files
└── resources/ # Project resources
```
#### 2. Required Tools
| Tool | Version | Purpose |
| ------ | --------- | --------- |
| Nushell | 0.107.1 | Primary shell and scripting |
| Nickel | 1.15.0+ | Configuration language |
| SOPS | 3.10.2 | Secret management |
| Age | 1.2.1 | Encryption |
| K9s | 0.50.6 | Kubernetes management |
#### 3. Nushell Plugins
- **nu_plugin_tera** - Template rendering
#### 4. Configuration Files
- User configuration templates
- Environment-specific configs
- Default settings and schemas
## Post-Installation Verification
### Basic Verification
2026-01-14 04:53:58 +00:00
```bash
2026-01-14 04:53:21 +00:00
# Check if provisioning command is available
provisioning --version
# Verify installation
provisioning env
# Show comprehensive environment info
provisioning allenv
```
Expected output should show:
2026-01-14 04:53:58 +00:00
```bash
2026-01-14 04:53:21 +00:00
✅ Provisioning v1.0.0 installed
✅ All dependencies available
✅ Configuration loaded successfully
```
### Tool Verification
2026-01-14 04:53:58 +00:00
```bash
2026-01-14 04:53:21 +00:00
# Check individual tools
nu --version # Should show Nushell 0.109.0+
nickel version # Should show Nickel 1.5+
sops --version # Should show SOPS 3.10.2
age --version # Should show Age 1.2.1
k9s version # Should show K9s 0.50.6
```
### Plugin Verification
2026-01-14 04:53:58 +00:00
```bash
2026-01-14 04:53:21 +00:00
# Start Nushell and check plugins
nu -c "version | get installed_plugins"
# Should include:
# - nu_plugin_tera (template rendering)
```
### Configuration Verification
2026-01-14 04:53:58 +00:00
```toml
2026-01-14 04:53:21 +00:00
# Validate configuration
provisioning validate config
# Should show:
# ✅ Configuration validation passed!
```
## Environment Setup
### Shell Configuration
Add to your shell profile (`~/.bashrc`, `~/.zshrc`, or `~/.profile`):
2026-01-14 04:53:58 +00:00
```bash
2026-01-14 04:53:21 +00:00
# Add provisioning to PATH
export PATH="/usr/local/bin:$PATH"
# Optional: Set default provisioning directory
export PROVISIONING="/usr/local/provisioning"
```
### Configuration Initialization
2026-01-14 04:53:58 +00:00
```toml
2026-01-14 04:53:21 +00:00
# Initialize user configuration
provisioning init config
# This creates ~/.provisioning/config.user.toml
```
### First-Time Setup
2026-01-14 04:53:58 +00:00
```bash
2026-01-14 04:53:21 +00:00
# Set up your first workspace
mkdir -p ~/provisioning-workspace
cd ~/provisioning-workspace
# Initialize workspace
provisioning init config dev
# Verify setup
provisioning env
```
## Platform-Specific Instructions
### Linux (Ubuntu/Debian)
2026-01-14 04:53:58 +00:00
```bash
2026-01-14 04:53:21 +00:00
# Install system dependencies
sudo apt update
sudo apt install -y curl wget tar
# Proceed with standard installation
wget https://releases.example.com/provisioning-latest.tar.gz
tar xzf provisioning-latest.tar.gz
cd provisioning-*
sudo ./install-provisioning
```
### Linux (RHEL/CentOS/Fedora)
2026-01-14 04:53:58 +00:00
```bash
2026-01-14 04:53:21 +00:00
# Install system dependencies
sudo dnf install -y curl wget tar
# or for older versions: sudo yum install -y curl wget tar
# Proceed with standard installation
```
### macOS
2026-01-14 04:53:58 +00:00
```bash
2026-01-14 04:53:21 +00:00
# Using Homebrew (if available)
brew install curl wget
# Or download directly
curl -LO https://releases.example.com/provisioning-latest.tar.gz
tar xzf provisioning-latest.tar.gz
cd provisioning-*
sudo ./install-provisioning
```
### Windows (WSL2)
2026-01-14 04:53:58 +00:00
```bash
2026-01-14 04:53:21 +00:00
# In WSL2 terminal
sudo apt update
sudo apt install -y curl wget tar
# Proceed with Linux installation steps
wget https://releases.example.com/provisioning-latest.tar.gz
# ... continue as Linux
```
## Configuration Examples
### Basic Configuration
Create `~/.provisioning/config.user.toml`:
2026-01-14 04:53:58 +00:00
```toml
2026-01-14 04:53:21 +00:00
[core]
name = "my-provisioning"
[paths]
base = "/usr/local/provisioning"
infra = "~/provisioning-workspace"
[debug]
enabled = false
log_level = "info"
[providers]
default = "local"
[output]
format = "yaml"
```
### Development Configuration
For developers, use enhanced debugging:
2026-01-14 04:53:58 +00:00
```toml
2026-01-14 04:53:21 +00:00
[debug]
enabled = true
log_level = "debug"
check = true
[cache]
enabled = false # Disable caching during development
```
## Upgrade and Migration
### Upgrading from Previous Version
2026-01-14 04:53:58 +00:00
```bash
2026-01-14 04:53:21 +00:00
# Backup current installation
sudo cp -r /usr/local/provisioning /usr/local/provisioning.backup
# Download new version
wget https://releases.example.com/provisioning-latest.tar.gz
# Extract and install
tar xzf provisioning-latest.tar.gz
cd provisioning-*
sudo ./install-provisioning
# Verify upgrade
provisioning --version
```
### Migrating Configuration
2026-01-14 04:53:58 +00:00
```toml
2026-01-14 04:53:21 +00:00
# Backup your configuration
cp -r ~/.provisioning ~/.provisioning.backup
# Initialize new configuration
provisioning init config
# Manually merge important settings from backup
```
## Troubleshooting Installation Issues
### Common Installation Problems
#### Permission Denied Errors
2026-01-14 04:53:58 +00:00
```bash
2026-01-14 04:53:21 +00:00
# Problem: Cannot write to /usr/local
# Solution: Use sudo
sudo ./install-provisioning
# Or install to user directory
./install-provisioning --prefix=$HOME/provisioning
export PATH="$HOME/provisioning/bin:$PATH"
```
#### Missing Dependencies
2026-01-14 04:53:58 +00:00
```bash
2026-01-14 04:53:21 +00:00
# Problem: curl/wget not found
# Ubuntu/Debian solution:
sudo apt install -y curl wget tar
# RHEL/CentOS solution:
sudo dnf install -y curl wget tar
```
#### Download Failures
2026-01-14 04:53:58 +00:00
```bash
2026-01-14 04:53:21 +00:00
# Problem: Cannot download package
# Solution: Check internet connection and try alternative
ping google.com
# Try alternative download method
curl -LO --retry 3 https://releases.example.com/provisioning-latest.tar.gz
# Or use wget with retries
wget --tries=3 https://releases.example.com/provisioning-latest.tar.gz
```
#### Extraction Failures
2026-01-14 04:53:58 +00:00
```bash
2026-01-14 04:53:21 +00:00
# Problem: Archive corrupted
# Solution: Verify and re-download
sha256sum provisioning-latest.tar.gz # Check against published hash
# Re-download if hash doesn't match
rm provisioning-latest.tar.gz
wget https://releases.example.com/provisioning-latest.tar.gz
```
#### Tool Installation Failures
2026-01-14 04:53:58 +00:00
```bash
2026-01-14 04:53:21 +00:00
# Problem: Nushell installation fails
# Solution: Check architecture and OS compatibility
uname -m # Should show x86_64 or arm64
uname -s # Should show Linux, Darwin, etc.
# Try manual tool installation
./install-dependencies.sh --verbose
```
### Verification Failures
#### Command Not Found
2026-01-14 04:53:58 +00:00
```bash
2026-01-14 04:53:21 +00:00
# Problem: 'provisioning' command not found
# Check installation path
ls -la /usr/local/bin/provisioning
# If missing, create symlink
sudo ln -sf /usr/local/provisioning/core/nulib/provisioning /usr/local/bin/provisioning
# Add to PATH if needed
export PATH="/usr/local/bin:$PATH"
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bashrc
```
#### Plugin Errors
2026-01-14 04:53:58 +00:00
```bash
2026-01-14 04:53:21 +00:00
# Problem: Plugin command not found
# Solution: Ensure plugin is properly registered
# Check available plugins
nu -c "version | get installed_plugins"
# If plugin missing, reload Nushell:
exec nu
```
#### Configuration Errors
2026-01-14 04:53:58 +00:00
```toml
2026-01-14 04:53:21 +00:00
# Problem: Configuration validation fails
# Solution: Initialize with template
provisioning init config
# Or validate and show errors
provisioning validate config --detailed
```
### Getting Help
If you encounter issues not covered here:
1. **Check logs**: `provisioning --debug env`
2. **Validate configuration**: `provisioning validate config`
3. **Check system compatibility**: `provisioning version --verbose`
4. **Consult troubleshooting guide**: `docs/user/troubleshooting-guide.md`
## Next Steps
After successful installation:
1. **Complete the Getting Started Guide**: `docs/user/getting-started.md`
2. **Set up your first workspace**: `docs/user/workspace-setup.md`
3. **Learn about configuration**: `docs/user/configuration.md`
4. **Try example tutorials**: `docs/user/examples/`
Your provisioning is now ready to manage cloud infrastructure!