116 lines
2.6 KiB
Bash
Executable File
116 lines
2.6 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
set -euo pipefail
|
||
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
RED='\033[0;31m'
|
||
NC='\033[0m'
|
||
|
||
log_info() {
|
||
echo -e "${GREEN}[INFO]${NC} $1"
|
||
}
|
||
|
||
log_warn() {
|
||
echo -e "${YELLOW}[WARN]${NC} $1"
|
||
}
|
||
|
||
log_err() {
|
||
echo -e "${RED}[ERROR]${NC} $1"
|
||
}
|
||
|
||
# 检查 root 权限
|
||
if [ "$EUID" -ne 0 ]; then
|
||
log_err "请使用 root 权限执行此脚本(如: sudo bash $0)"
|
||
exit 1
|
||
fi
|
||
|
||
log_info "=========================================="
|
||
log_info "开始初始化实验环境..."
|
||
log_info "=========================================="
|
||
|
||
REPO_DIR="/etc/yum.repos.d"
|
||
BACKUP_DIR="/etc/yum.repos.d.bak"
|
||
|
||
# 首次运行时备份原有软件源
|
||
if [ ! -d "$BACKUP_DIR" ]; then
|
||
log_info "备份原有 yum 软件源..."
|
||
cp -a "$REPO_DIR" "$BACKUP_DIR"
|
||
fi
|
||
|
||
# 配置 CentOS 7.9 基础源
|
||
log_info "配置 CentOS 7.9 阿里云软件源..."
|
||
|
||
cat > "$REPO_DIR/CentOS-Base.repo" <<'EOF'
|
||
[base]
|
||
name=CentOS-7 - Base - Aliyun
|
||
baseurl=http://mirrors.aliyun.com/centos-vault/7.9.2009/os/$basearch/
|
||
gpgcheck=0
|
||
enabled=1
|
||
|
||
[updates]
|
||
name=CentOS-7 - Updates - Aliyun
|
||
baseurl=http://mirrors.aliyun.com/centos-vault/7.9.2009/updates/$basearch/
|
||
gpgcheck=0
|
||
enabled=1
|
||
|
||
[extras]
|
||
name=CentOS-7 - Extras - Aliyun
|
||
baseurl=http://mirrors.aliyun.com/centos-vault/7.9.2009/extras/$basearch/
|
||
gpgcheck=0
|
||
enabled=1
|
||
EOF
|
||
|
||
# 配置 QEMU EV 源
|
||
cat > "$REPO_DIR/CentOS-QEMU-EV.repo" <<'EOF'
|
||
[centos-qemu-ev]
|
||
name=CentOS-7 - QEMU EV - Aliyun
|
||
baseurl=http://mirrors.aliyun.com/centos-vault/7.9.2009/virt/$basearch/kvm-common/
|
||
gpgcheck=0
|
||
enabled=1
|
||
EOF
|
||
|
||
# 配置 OpenStack Rocky 源
|
||
cat > "$REPO_DIR/CentOS-OpenStack-rocky.repo" <<'EOF'
|
||
[centos-openstack-rocky]
|
||
name=CentOS-7 - OpenStack Rocky - Aliyun
|
||
baseurl=http://mirrors.aliyun.com/centos-vault/7.9.2009/cloud/$basearch/openstack-rocky/
|
||
gpgcheck=0
|
||
enabled=1
|
||
exclude=sip,PyQt4
|
||
EOF
|
||
|
||
# 删除不再需要的 Ceph 源,避免 yum 读取其元数据
|
||
rm -f "$REPO_DIR/CentOS-Ceph-Luminous.repo"
|
||
|
||
|
||
# 清除旧仓库元数据,保留已下载的软件包缓存
|
||
log_info "刷新软件源元数据..."
|
||
yum clean metadata > /dev/null 2>&1
|
||
|
||
# 安装 KVM / libvirt
|
||
log_info "安装/检查虚拟化软件包..."
|
||
|
||
yum install -y \
|
||
qemu-kvm \
|
||
libvirt \
|
||
virt-install \
|
||
bridge-utils \
|
||
qemu-img
|
||
|
||
# 启动 libvirtd
|
||
log_info "启动 libvirtd 服务..."
|
||
|
||
systemctl enable --now libvirtd > /dev/null
|
||
|
||
# 验证服务状态
|
||
if systemctl is-active --quiet libvirtd; then
|
||
log_info "libvirtd 状态正常。"
|
||
else
|
||
log_err "libvirtd 启动失败!"
|
||
exit 1
|
||
fi
|
||
|
||
log_info "=========================================="
|
||
log_info "实验环境初始化完成!"
|
||
log_info "==========================================" |