#!/bin/bash # RedFlag Agent Installer - Linux # Generated for agent: {{.AgentID}} # Platform: {{.Platform}} # Architecture: {{.Architecture}} # Version: {{.Version}} set -e AGENT_ID="{{.AgentID}}" BINARY_URL="{{.BinaryURL}}" CONFIG_URL="{{.ConfigURL}}" INSTALL_DIR="/usr/local/bin" CONFIG_DIR="/etc/redflag" OLD_CONFIG_DIR="/etc/aggregator" SERVICE_NAME="redflag-agent" VERSION="{{.Version}}" LOG_DIR="/var/log/redflag" BACKUP_DIR="${CONFIG_DIR}/backups/backup.$(date +%s)" echo "=== RedFlag Agent v${VERSION} Installation ===" echo "Agent ID: ${AGENT_ID}" echo "Platform: {{.Platform}}" echo "Installing to: ${INSTALL_DIR}/${SERVICE_NAME}" echo # Step 1: Detect existing installation echo "Detecting existing RedFlag installations..." MIGRATION_NEEDED=false if [ -f "${CONFIG_DIR}/config.json" ]; then echo "✓ Existing installation detected at ${CONFIG_DIR}" MIGRATION_NEEDED=true elif [ -f "${OLD_CONFIG_DIR}/config.json" ]; then echo "⚠ Old installation detected at ${OLD_CONFIG_DIR} - MIGRATION REQUIRED" MIGRATION_NEEDED=true else echo "✓ Fresh installation" fi # Step 2: Create backup if migration needed if [ "${MIGRATION_NEEDED}" = true ]; then echo echo "=== Migration Required ===" echo "Agent will migrate on first start. Backing up configuration..." sudo mkdir -p "${BACKUP_DIR}" if [ -f "${OLD_CONFIG_DIR}/config.json" ]; then echo "Backing up old configuration..." sudo cp -r "${OLD_CONFIG_DIR}"/* "${BACKUP_DIR}/" 2>/dev/null || true fi if [ -f "${CONFIG_DIR}/config.json" ]; then echo "Backing up current configuration..." sudo cp "${CONFIG_DIR}/config.json" "${BACKUP_DIR}/config.json.backup" 2>/dev/null || true fi echo "Migration will run automatically when agent starts." echo "View migration logs with: sudo journalctl -u ${SERVICE_NAME} -f" echo fi # Step 3: Stop existing service if systemctl is-active --quiet ${SERVICE_NAME} 2>/dev/null; then echo "Stopping existing RedFlag agent service..." sudo systemctl stop ${SERVICE_NAME} fi # Step 4: Create directories echo "Creating directories..." sudo mkdir -p "${CONFIG_DIR}" sudo mkdir -p "${CONFIG_DIR}/backups" sudo mkdir -p "/var/lib/redflag" sudo mkdir -p "/var/log/redflag" # Step 5: Download agent binary echo "Downloading agent binary..." sudo curl -sSL -o "${INSTALL_DIR}/${SERVICE_NAME}" "${BINARY_URL}" sudo chmod +x "${INSTALL_DIR}/${SERVICE_NAME}" # Step 6: Handle configuration # IMPORTANT: The agent handles its own migration on first start. # We either preserve existing config OR create a minimal template. if [ -f "${CONFIG_DIR}/config.json" ]; then echo "[CONFIG] Upgrade detected - preserving existing configuration" echo "[CONFIG] Agent will handle migration automatically on first start" echo "[CONFIG] Backup created at: ${BACKUP_DIR}" else echo "[CONFIG] Fresh install - generating minimal configuration with registration token" # Create minimal config template - agent will populate missing fields on first start sudo cat > "${CONFIG_DIR}/config.json" <