#!/bin/bash

# 确保脚本以 root 权限运行
if [ "$EUID" -ne 0 ]; then
          echo "请使用 sudo 运行此脚本！(例如: sudo bash setup_kvm_cockpit.sh)"
            exit 1
fi

echo "================================================="
echo "   开始部署 KVM 虚拟化底层与 Cockpit 面板..."
echo "================================================="

# 1. 检查 CPU 是否支持硬件虚拟化
echo "[1/6] 检查 CPU 虚拟化支持..."
VIRT_SUPPORT=$(egrep -c '(vmx|svm)' /proc/cpuinfo)
if [ "$VIRT_SUPPORT" -eq 0 ]; then
            echo "警告：未检测到硬件虚拟化支持！请在 BIOS 中开启 VT-x (Intel) 或 AMD-V (AMD)。"
                # 这里不退出，因为嵌套虚拟化环境可能检测不到，让用户自行决定
        else
                    echo "-> CPU 虚拟化支持已开启 (核心数: $VIRT_SUPPORT)"
fi

# 2. 更新系统软件包列表
echo "[2/6] 更新软件包列表..."
apt update -y

# 3. 安装 KVM 核心组件与网络工具
echo "[3/6] 安装 KVM 及相关依赖..."
# qemu-kvm: KVM 核心守护程序
# libvirt-daemon-system/libvirt-clients: libvirt 管理工具
# bridge-utils: 用于配置网桥 (非常重要，分配物理网段 IP 必备)
# virtinst: virt-install 命令行创建虚拟机的工具
apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst

# 4. 配置用户权限
echo "[4/6] 配置用户权限..."
# 将执行 sudo 的当前用户加入 libvirt 和 kvm 用户组，实现免密码管理虚拟机
if [ -n "$SUDO_USER" ]; then
            usermod -aG libvirt "$SUDO_USER"
                usermod -aG kvm "$SUDO_USER"
                    echo "-> 已将用户 $SUDO_USER 加入虚拟化管理组。"
fi

# 5. 安装 Cockpit 面板及 KVM 插件
echo "[5/6] 安装 Cockpit Web 管理面板..."
apt install -y cockpit cockpit-machines

# 6. 启动并设置服务开机自启
echo "[6/6] 启动服务..."
systemctl enable --now libvirtd
systemctl enable --now cockpit.socket

echo "================================================="
echo "   部署完成！"
echo "================================================="
echo "为了让用户组权限生效，请【注销并重新登录】当前 SSH 会话，或者执行命令: newgrp libvirt"
echo " "
echo "【Cockpit 访问地址】"
# 自动获取本机 IP
LOCAL_IP=$(hostname -I | awk '{print $1}')
echo "请在浏览器中打开: https://${LOCAL_IP}:9090"
echo "使用你平时登录 Ubuntu 的用户名和密码即可登录面板。"
echo "================================================="
