110 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			110 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
#!/bin/bash
 | 
						|
 | 
						|
# Consul模板变量替换测试脚本
 | 
						|
set -e
 | 
						|
 | 
						|
TEMPLATE_FILE="infrastructure/consul/baseline/consul.hcl"
 | 
						|
OUTPUT_DIR="infrastructure/consul/test-output"
 | 
						|
 | 
						|
# 节点配置
 | 
						|
declare -A NODE_CONFIGS
 | 
						|
NODE_CONFIGS[ch4]="100.117.106.134:server:true"
 | 
						|
NODE_CONFIGS[ash3c]="100.116.80.94:server:true"
 | 
						|
NODE_CONFIGS[warden]="100.122.197.112:server:true"
 | 
						|
NODE_CONFIGS[ash1d]="100.81.26.3:client:false"
 | 
						|
NODE_CONFIGS[ash2e]="100.81.26.4:client:false"
 | 
						|
NODE_CONFIGS[ch2]="100.117.106.135:client:false"
 | 
						|
NODE_CONFIGS[ch3]="100.117.106.137:client:false"
 | 
						|
NODE_CONFIGS[de]="100.98.209.52:client:false"
 | 
						|
NODE_CONFIGS[onecloud1]="100.98.209.53:client:false"
 | 
						|
NODE_CONFIGS[semaphore]="100.98.209.54:client:false"
 | 
						|
NODE_CONFIGS[browser]="100.116.112.45:client:false"
 | 
						|
NODE_CONFIGS[hcp1]="100.116.112.46:client:false"
 | 
						|
NODE_CONFIGS[influxdb]="100.116.112.47:client:false"
 | 
						|
 | 
						|
# 颜色输出
 | 
						|
GREEN='\033[0;32m'
 | 
						|
BLUE='\033[0;34m'
 | 
						|
NC='\033[0m'
 | 
						|
 | 
						|
log() {
 | 
						|
    echo -e "${BLUE}[$(date '+%H:%M:%S')]${NC} $1"
 | 
						|
}
 | 
						|
 | 
						|
success() {
 | 
						|
    echo -e "${GREEN}[SUCCESS]${NC} $1"
 | 
						|
}
 | 
						|
 | 
						|
# 创建输出目录
 | 
						|
mkdir -p "$OUTPUT_DIR"
 | 
						|
 | 
						|
# 测试模板替换
 | 
						|
test_template_replacement() {
 | 
						|
    local node=$1
 | 
						|
    local config=${NODE_CONFIGS[$node]}
 | 
						|
    
 | 
						|
    if [ -z "$config" ]; then
 | 
						|
        echo "错误: 未找到节点 $node 的配置"
 | 
						|
        return 1
 | 
						|
    fi
 | 
						|
    
 | 
						|
    # 解析配置
 | 
						|
    IFS=':' read -r bind_addr node_zone ui_enabled <<< "$config"
 | 
						|
    
 | 
						|
    log "测试节点: $node"
 | 
						|
    log "绑定地址: $bind_addr"
 | 
						|
    log "节点区域: $node_zone"
 | 
						|
    log "UI启用: $ui_enabled"
 | 
						|
    
 | 
						|
    # 替换模板变量
 | 
						|
    local output_file="$OUTPUT_DIR/${node}-consul.hcl"
 | 
						|
    
 | 
						|
    sed "s/{{NODE_NAME}}/$node/g; s/{{BIND_ADDR}}/$bind_addr/g; s/{{NODE_ZONE}}/$node_zone/g; s/{{UI_ENABLED}}/$ui_enabled/g" "$TEMPLATE_FILE" > "$output_file"
 | 
						|
    
 | 
						|
    success "模板替换完成: $output_file"
 | 
						|
    
 | 
						|
    # 显示前10行验证
 | 
						|
    echo "--- 验证前10行 ---"
 | 
						|
    head -10 "$output_file"
 | 
						|
    echo "--- 验证完成 ---"
 | 
						|
    echo ""
 | 
						|
}
 | 
						|
 | 
						|
# 主函数
 | 
						|
main() {
 | 
						|
    local target_node=${1:-"ch4"}
 | 
						|
    
 | 
						|
    log "开始模板变量替换测试"
 | 
						|
    log "目标节点: $target_node"
 | 
						|
    
 | 
						|
    if [ "$target_node" = "all" ]; then
 | 
						|
        log "测试所有节点"
 | 
						|
        for node in "${!NODE_CONFIGS[@]}"; do
 | 
						|
            test_template_replacement "$node"
 | 
						|
        done
 | 
						|
    else
 | 
						|
        test_template_replacement "$target_node"
 | 
						|
    fi
 | 
						|
    
 | 
						|
    success "模板测试完成!"
 | 
						|
    log "输出目录: $OUTPUT_DIR"
 | 
						|
}
 | 
						|
 | 
						|
# 显示帮助
 | 
						|
show_help() {
 | 
						|
    echo "使用方法: $0 [节点名|all]"
 | 
						|
    echo ""
 | 
						|
    echo "示例:"
 | 
						|
    echo "  $0 ch4        # 测试ch4节点"
 | 
						|
    echo "  $0 all        # 测试所有节点"
 | 
						|
    echo ""
 | 
						|
    echo "支持的节点: ${!NODE_CONFIGS[@]}"
 | 
						|
}
 | 
						|
 | 
						|
if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
 | 
						|
    show_help
 | 
						|
    exit 0
 | 
						|
fi
 | 
						|
 | 
						|
main "$@"
 |