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
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
# 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
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
# 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
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
# 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
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
# 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
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
# 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
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
# 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.
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
# 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
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
/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
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
# Check if provisioning command is available
|
|
|
|
|
provisioning --version
|
|
|
|
|
|
|
|
|
|
# Verify installation
|
|
|
|
|
provisioning env
|
|
|
|
|
|
|
|
|
|
# Show comprehensive environment info
|
|
|
|
|
provisioning allenv
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Expected output should show:
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
✅ Provisioning v1.0.0 installed
|
|
|
|
|
✅ All dependencies available
|
|
|
|
|
✅ Configuration loaded successfully
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Tool Verification
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
# 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
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
# Start Nushell and check plugins
|
|
|
|
|
nu -c "version | get installed_plugins"
|
|
|
|
|
|
|
|
|
|
# Should include:
|
|
|
|
|
# - nu_plugin_tera (template rendering)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Configuration Verification
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
# Validate configuration
|
|
|
|
|
provisioning validate config
|
|
|
|
|
|
|
|
|
|
# Should show:
|
|
|
|
|
# ✅ Configuration validation passed!
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Environment Setup
|
|
|
|
|
|
|
|
|
|
### Shell Configuration
|
|
|
|
|
|
|
|
|
|
Add to your shell profile (`~/.bashrc`, `~/.zshrc`, or `~/.profile`):
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
# Add provisioning to PATH
|
|
|
|
|
export PATH="/usr/local/bin:$PATH"
|
|
|
|
|
|
|
|
|
|
# Optional: Set default provisioning directory
|
|
|
|
|
export PROVISIONING="/usr/local/provisioning"
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Configuration Initialization
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
# Initialize user configuration
|
|
|
|
|
provisioning init config
|
|
|
|
|
|
|
|
|
|
# This creates ~/.provisioning/config.user.toml
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### First-Time Setup
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
# 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)
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
# 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)
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
# 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
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
# 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)
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
# 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`:
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
[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:
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
[debug]
|
|
|
|
|
enabled = true
|
|
|
|
|
log_level = "debug"
|
|
|
|
|
check = true
|
|
|
|
|
|
|
|
|
|
[cache]
|
|
|
|
|
enabled = false # Disable caching during development
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Upgrade and Migration
|
|
|
|
|
|
|
|
|
|
### Upgrading from Previous Version
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
# 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
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
# 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
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
# 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
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
# 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
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
# 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
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
# 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
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
# 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
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
# 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
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
# 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
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
# 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!
|