refactor: 更新项目结构和文档,移除不再使用的配置文件
- 修改README.md,更新项目特性和目录结构说明 - 重命名基础设施代码目录为tofu,并添加Docker Swarm配置目录 - 移除不再使用的Docker Compose和Traefik配置文件 - 更新Terraform配置,专注于Oracle Cloud支持,移除华为云相关配置 - 清理开发环境变量和示例文件
This commit is contained in:
174
scripts/setup/setup-opentofu.sh
Executable file
174
scripts/setup/setup-opentofu.sh
Executable file
@@ -0,0 +1,174 @@
|
||||
#!/bin/bash
|
||||
|
||||
# OpenTofu 设置脚本
|
||||
set -euo pipefail
|
||||
|
||||
# 颜色定义
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# 日志函数
|
||||
log_info() {
|
||||
echo -e "${BLUE}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
log_success() {
|
||||
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
||||
}
|
||||
|
||||
log_warning() {
|
||||
echo -e "${YELLOW}[WARNING]${NC} $1"
|
||||
}
|
||||
|
||||
log_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1"
|
||||
}
|
||||
|
||||
# 检查 OpenTofu 是否已安装
|
||||
check_opentofu() {
|
||||
log_info "检查 OpenTofu 安装状态..."
|
||||
|
||||
if command -v tofu &> /dev/null; then
|
||||
local version=$(tofu version | head -n1)
|
||||
log_success "OpenTofu 已安装: $version"
|
||||
return 0
|
||||
else
|
||||
log_error "OpenTofu 未安装"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# 检查配置文件
|
||||
check_config() {
|
||||
log_info "检查配置文件..."
|
||||
|
||||
local config_file="tofu/environments/dev/terraform.tfvars"
|
||||
|
||||
if [[ ! -f "$config_file" ]]; then
|
||||
log_error "配置文件不存在: $config_file"
|
||||
log_info "请复制 terraform.tfvars.example 并填入实际配置"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# 检查是否包含示例值
|
||||
if grep -q "your_tenancy_id_here\|your_user_id_here\|your:key:fingerprint:here" "$config_file"; then
|
||||
log_warning "配置文件包含示例值,请填入实际的 Oracle Cloud 配置"
|
||||
log_info "需要配置以下项目:"
|
||||
echo " - tenancy_ocid: Oracle Cloud 租户 OCID"
|
||||
echo " - user_ocid: 用户 OCID"
|
||||
echo " - fingerprint: API 密钥指纹"
|
||||
echo " - private_key_path: 私钥文件路径"
|
||||
echo " - compartment_ocid: 区间 OCID"
|
||||
return 1
|
||||
fi
|
||||
|
||||
log_success "配置文件检查通过"
|
||||
return 0
|
||||
}
|
||||
|
||||
# 初始化 OpenTofu
|
||||
init_opentofu() {
|
||||
log_info "初始化 OpenTofu..."
|
||||
|
||||
cd tofu/environments/dev
|
||||
|
||||
# 清理旧的状态文件
|
||||
if [[ -d ".terraform" ]]; then
|
||||
log_info "清理旧的 .terraform 目录..."
|
||||
rm -rf .terraform
|
||||
fi
|
||||
|
||||
# 初始化
|
||||
if tofu init; then
|
||||
log_success "OpenTofu 初始化成功"
|
||||
else
|
||||
log_error "OpenTofu 初始化失败"
|
||||
return 1
|
||||
fi
|
||||
|
||||
cd - > /dev/null
|
||||
}
|
||||
|
||||
# 验证配置
|
||||
validate_config() {
|
||||
log_info "验证 OpenTofu 配置..."
|
||||
|
||||
cd tofu/environments/dev
|
||||
|
||||
if tofu validate; then
|
||||
log_success "配置验证通过"
|
||||
else
|
||||
log_error "配置验证失败"
|
||||
return 1
|
||||
fi
|
||||
|
||||
cd - > /dev/null
|
||||
}
|
||||
|
||||
# 生成计划
|
||||
plan_infrastructure() {
|
||||
log_info "生成基础设施计划..."
|
||||
|
||||
cd tofu/environments/dev
|
||||
|
||||
if tofu plan -var-file="terraform.tfvars" -out=tfplan; then
|
||||
log_success "计划生成成功"
|
||||
log_info "计划文件已保存为 tfplan"
|
||||
else
|
||||
log_error "计划生成失败"
|
||||
return 1
|
||||
fi
|
||||
|
||||
cd - > /dev/null
|
||||
}
|
||||
|
||||
# 显示帮助信息
|
||||
show_help() {
|
||||
echo "OpenTofu 设置脚本"
|
||||
echo ""
|
||||
echo "用法: $0 [选项]"
|
||||
echo ""
|
||||
echo "选项:"
|
||||
echo " init - 初始化 OpenTofu"
|
||||
echo " validate - 验证配置"
|
||||
echo " plan - 生成执行计划"
|
||||
echo " check - 检查环境和配置"
|
||||
echo " help - 显示此帮助信息"
|
||||
echo ""
|
||||
echo "示例:"
|
||||
echo " $0 check # 检查环境"
|
||||
echo " $0 init # 初始化项目"
|
||||
echo " $0 plan # 生成计划"
|
||||
}
|
||||
|
||||
# 主函数
|
||||
main() {
|
||||
case "${1:-help}" in
|
||||
"check")
|
||||
check_opentofu
|
||||
check_config
|
||||
;;
|
||||
"init")
|
||||
check_opentofu || exit 1
|
||||
check_config || exit 1
|
||||
init_opentofu
|
||||
;;
|
||||
"validate")
|
||||
validate_config
|
||||
;;
|
||||
"plan")
|
||||
check_opentofu || exit 1
|
||||
check_config || exit 1
|
||||
plan_infrastructure
|
||||
;;
|
||||
"help"|*)
|
||||
show_help
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# 运行主函数
|
||||
main "$@"
|
||||
Reference in New Issue
Block a user