#!/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 "$@"