mgmt/scripts/utilities/maintenance/cleanup-global-config.sh

170 lines
5.3 KiB
Bash
Executable File

#!/bin/bash
# Nomad Global 配置清理脚本
# 此脚本用于移除配置文件中的 .global 后缀
set -e
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 日志函数
log() {
echo -e "${GREEN}[$(date '+%Y-%m-%d %H:%M:%S')]${NC} $1"
}
warn() {
echo -e "${YELLOW}[$(date '+%Y-%m-%d %H:%M:%S')]${NC} $1"
}
error() {
echo -e "${RED}[$(date '+%Y-%m-%d %H:%M:%S')]${NC} $1"
}
# 备份文件函数
backup_file() {
local file=$1
if [ -f "$file" ]; then
cp "$file" "${file}.backup.$(date +%Y%m%d_%H%M%S)"
log "已备份文件: $file"
fi
}
# 清理 Ansible 配置文件中的 .global 后缀
cleanup_ansible_configs() {
log "开始清理 Ansible 配置文件..."
# 处理 configure-nomad-clients.yml
local client_config="/root/mgmt/deployment/ansible/playbooks/configure-nomad-clients.yml"
if [ -f "$client_config" ]; then
backup_file "$client_config"
sed -i 's/\.global//g' "$client_config"
log "已清理 configure-nomad-clients.yml"
fi
# 处理 deploy-korean-nodes.yml
local korean_config="/root/mgmt/deployment/ansible/playbooks/deploy-korean-nodes.yml"
if [ -f "$korean_config" ]; then
backup_file "$korean_config"
sed -i 's/\.global//g' "$korean_config"
log "已清理 deploy-korean-nodes.yml"
fi
# 处理 update_ch2_nomad_name*.yml
for file in /root/mgmt/deployment/ansible/update_ch2_nomad_name*.yml; do
if [ -f "$file" ]; then
backup_file "$file"
sed -i 's/name = "ch2\.global\.global"/name = "ch2"/g' "$file"
sed -i 's/hosts: ch2\.global/hosts: ch2/g' "$file"
log "已清理 $file"
fi
done
# 处理其他包含 .global 的 Ansible 文件
find /root/mgmt/deployment/ansible -name "*.yml" -o -name "*.yaml" | while read file; do
if grep -q "\.global" "$file"; then
backup_file "$file"
sed -i 's/\.global//g' "$file"
log "已清理 $file"
fi
done
}
# 清理 inventory 文件中的 .global 后缀
cleanup_inventory_files() {
log "开始清理 inventory 文件..."
# 处理所有 inventory 文件
find /root/mgmt/deployment/ansible/inventories -name "*.ini" | while read file; do
if grep -q "\.global" "$file"; then
backup_file "$file"
sed -i 's/\.global//g' "$file"
log "已清理 inventory 文件: $file"
fi
done
}
# 清理脚本文件中的 .global 后缀
cleanup_script_files() {
log "开始清理脚本文件..."
# 处理 nomad-leader-discovery.sh
local script_file="/root/mgmt/deployment/scripts/nomad-leader-discovery.sh"
if [ -f "$script_file" ]; then
backup_file "$script_file"
sed -i 's/\.global//g' "$script_file"
log "已清理 nomad-leader-discovery.sh"
fi
}
# 更新 Nomad 配置模板中的 region 设置
update_nomad_templates() {
log "开始更新 Nomad 配置模板..."
# 处理 OpenTofu 模板
local template_file="/root/mgmt/infrastructure/opentofu/modules/nomad-cluster/templates/nomad-userdata.sh"
if [ -f "$template_file" ]; then
backup_file "$template_file"
sed -i 's/region = "dc1"/region = "dc1"/g' "$template_file"
log "已更新 Nomad 配置模板中的 region 设置"
fi
# 处理其他可能的模板文件
find /root/mgmt -name "*.hcl" -o -name "*.sh" | while read file; do
if grep -q 'region = "dc1"' "$file"; then
backup_file "$file"
sed -i 's/region = "dc1"/region = "dc1"/g' "$file"
log "已更新 $file 中的 region 设置"
fi
done
}
# 验证修改结果
verify_changes() {
log "验证修改结果..."
# 检查是否还有 .global 后缀
local global_count=$(grep -r "\.global" /root/mgmt --include="*.yml" --include="*.yaml" --include="*.ini" --include="*.sh" --include="*.hcl" | grep -v cleanup-global-config.sh | wc -l)
if [ "$global_count" -eq 0 ]; then
log "✅ 所有 .global 后缀已成功移除"
else
warn "仍有一些文件包含 .global 后缀,请手动检查"
grep -r "\.global" /root/mgmt --include="*.yml" --include="*.yaml" --include="*.ini" --include="*.sh" --include="*.hcl" | grep -v cleanup-global-config.sh || true
fi
# 检查 region 设置
local region = "dc1"' /root/mgmt --include="*.hcl" --include="*.sh" | grep -v cleanup-global-config.sh | wc -l)
if [ "$region_count" -eq 0 ]; then
log "✅ 所有 region 'global' 设置已更新"
else
warn "仍有一些 region 设置为 'global',请手动检查"
grep -r 'region = "dc1"' /root/mgmt --include="*.hcl" --include="*.sh" | grep -v cleanup-global-config.sh || true
fi
}
# 主函数
main() {
log "开始执行 Nomad Global 配置清理..."
# 创建备份目录
mkdir -p /root/mgmt/backups/global_cleanup
log "已创建备份目录: /root/mgmt/backups/global_cleanup"
# 执行清理操作
cleanup_ansible_configs
cleanup_inventory_files
cleanup_script_files
update_nomad_templates
# 验证修改结果
verify_changes
log "Nomad Global 配置清理完成!"
log "请检查备份文件并重新部署相关配置"
}
# 执行主函数
main "$@"