47 lines
1.1 KiB
Bash
Executable File
47 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
|
CONFIG_FILE="$PROJECT_DIR/config/cluster-vars.yml"
|
|
|
|
echo "=== K3s集群自动化部署 ==="
|
|
|
|
# 检查配置文件
|
|
if [ ! -f "$CONFIG_FILE" ]; then
|
|
echo "❌ 错误: 配置文件不存在: $CONFIG_FILE"
|
|
echo "请复制 config/cluster-vars.yml.example 为 config/cluster-vars.yml 并填写配置"
|
|
exit 1
|
|
fi
|
|
|
|
# 安装依赖
|
|
if ! command -v ansible &> /dev/null; then
|
|
echo "📦 安装Ansible..."
|
|
sudo apt update
|
|
sudo apt install -y ansible python3-pip python3-yaml
|
|
fi
|
|
|
|
# 生成inventory
|
|
echo "📝 生成Ansible inventory..."
|
|
cd "$PROJECT_DIR"
|
|
python3 "$SCRIPT_DIR/generate-inventory.py"
|
|
|
|
# 部署K3s集群
|
|
echo "🚀 部署K3s集群..."
|
|
cd "$PROJECT_DIR/k3s-ansible"
|
|
ansible-playbook site.yml \
|
|
-i inventory/hosts.ini \
|
|
-e "@$CONFIG_FILE"
|
|
|
|
# 配置kubectl
|
|
echo "⚙️ 配置kubectl..."
|
|
mkdir -p ~/.kube
|
|
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
|
|
sudo chown $USER:$USER ~/.kube/config
|
|
|
|
# 验证集群
|
|
echo "✅ 验证集群状态..."
|
|
kubectl get nodes
|
|
|
|
echo "=== K3s集群部署完成 ==="
|