#!/bin/bash # CloudPe Agent — Universal Installer # Usage: curl -sSL https://repo.cloudpe.dev/install.sh | bash -s -- [--token TOKEN] [--collector ENDPOINT] set -euo pipefail REPO_URL="https://repo.cloudpe.dev" TOKEN="" COLLECTOR="" API_URL="" while [[ $# -gt 0 ]]; do case $1 in --token) TOKEN="$2"; shift 2;; --collector) COLLECTOR="$2"; shift 2;; --api-url) API_URL="$2"; shift 2;; --help|-h) echo "Usage: $0 [--token TOKEN] [--collector ENDPOINT] [--api-url URL]" echo " --token Agent registration token from CMP" echo " --collector Metrics collector gRPC endpoint (host:port)" echo " --api-url CMP API base URL (e.g., https://app.cloudpe.com)" exit 0;; *) echo "Unknown option: $1"; shift;; esac done if [ "$(id -u)" -ne 0 ]; then echo "Error: this script must be run as root (use sudo)" >&2 exit 1 fi if [ ! -f /etc/os-release ]; then echo "Error: cannot detect OS (missing /etc/os-release)" >&2 exit 1 fi . /etc/os-release OS="${ID}" VERSION_MAJOR="${VERSION_ID%%.*}" echo "Detected: ${PRETTY_NAME:-$OS $VERSION_MAJOR}" case "$OS" in ubuntu|debian) echo "Adding CloudPe APT repository..." apt-get update -qq && apt-get install -y -qq curl gnupg >/dev/null mkdir -p /usr/share/keyrings curl -fsSL "${REPO_URL}/gpg/cloudpe-packages.gpg" \ | gpg --dearmor --yes -o /usr/share/keyrings/cloudpe-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/cloudpe-archive-keyring.gpg] ${REPO_URL}/apt stable main" \ > /etc/apt/sources.list.d/cloudpe.list apt-get update -qq apt-get install -y cloudpe-agent ;; almalinux|rocky|centos|rhel|fedora) echo "Adding CloudPe RPM repository..." cat > /etc/yum.repos.d/cloudpe.repo <&2 echo "Supported: Ubuntu, Debian, AlmaLinux, Rocky Linux, CentOS, RHEL, Fedora" exit 1 ;; esac if [ -n "$COLLECTOR" ] || [ -n "$TOKEN" ]; then mkdir -p /etc/cloudpe cat > /etc/cloudpe/vm-agent.yaml </dev/null || true fi if [ -n "$TOKEN" ]; then echo "$TOKEN" > /etc/cloudpe/token chmod 600 /etc/cloudpe/token chown cloudpe-agent:cloudpe-agent /etc/cloudpe/token 2>/dev/null || true fi systemctl daemon-reload systemctl enable --now cloudpe-vm-agent echo "" echo "CloudPe Agent installed successfully!" echo " Status: systemctl status cloudpe-vm-agent" echo " Config: /etc/cloudpe/vm-agent.yaml" echo " Logs: journalctl -u cloudpe-vm-agent -f"