#!/bin/bash set -e echo "Installing Infrastructure Controller..." python_version=$(python3 --version | awk '{print $2}') required_version="3.11" if [ "$(printf '%s\n' "$required_version" "$python_version" | sort -V | head -n1)" != "$required_version" ]; then echo "Error: Python 3.11+ required, found $python_version" exit 1 fi if ! id infractl >/dev/null 2>&1; then echo "Creating infractl user..." sudo useradd -r -s /bin/false -d /opt/infra-controller infractl fi sudo mkdir -p /opt/infra-controller sudo mkdir -p /etc/infra-controller sudo mkdir -p /var/lib/infra-controller sudo mkdir -p /var/log/infra-controller echo "Installing Python package..." sudo python3 -m venv /opt/infra-controller/venv sudo /opt/infra-controller/venv/bin/pip install --upgrade pip sudo /opt/infra-controller/venv/bin/pip install -e . if [ ! -f /etc/infra-controller/config.toml ]; then echo "Installing default configuration..." sudo cp config/controller.toml.example /etc/infra-controller/config.toml fi if [ ! -f /etc/infra-controller/controller.env ]; then sudo cp systemd/infra-controller.env /etc/infra-controller/controller.env fi echo "Installing systemd service..." sudo cp systemd/infra-controller.service /etc/systemd/system/ sudo cp systemd/infra-controller-once.service /etc/systemd/system/ sudo cp systemd/infra-controller-watch.service /etc/systemd/system/ sudo systemctl daemon-reload echo "Enabling infra-controller watch service..." sudo systemctl enable infra-controller-watch.service sudo chown -R infractl:infractl /opt/infra-controller sudo chown -R infractl:infractl /var/lib/infra-controller sudo chown -R infractl:infractl /var/log/infra-controller echo "Installation complete!"