170 lines
5.3 KiB
Bash
Executable File
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 "$@" |