61 lines
1.7 KiB
Bash
Executable File
61 lines
1.7 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# Consul配置生成脚本
|
||
# 此脚本使用Consul模板从KV存储生成最终的Consul配置文件
|
||
|
||
set -e
|
||
|
||
# 配置参数
|
||
CONSUL_ADDR="${CONSUL_ADDR:-localhost:8500}"
|
||
ENVIRONMENT="${ENVIRONMENT:-dev}"
|
||
CONSUL_CONFIG_DIR="${CONSUL_CONFIG_DIR:-/root/mgmt/components/consul/configs}"
|
||
CONSUL_TEMPLATE_CMD="${CONSUL_TEMPLATE_CMD:-consul-template}"
|
||
|
||
echo "开始生成Consul配置文件..."
|
||
echo "Consul地址: $CONSUL_ADDR"
|
||
echo "环境: $ENVIRONMENT"
|
||
echo "配置目录: $CONSUL_CONFIG_DIR"
|
||
|
||
# 检查Consul连接
|
||
echo "检查Consul连接..."
|
||
if ! curl -s "$CONSUL_ADDR/v1/status/leader" | grep -q "."; then
|
||
echo "错误: 无法连接到Consul服务器 $CONSUL_ADDR"
|
||
exit 1
|
||
fi
|
||
echo "Consul连接成功"
|
||
|
||
# 检查consul-template是否可用
|
||
if ! command -v $CONSUL_TEMPLATE_CMD &> /dev/null; then
|
||
echo "错误: consul-template 命令不可用,请安装consul-template"
|
||
exit 1
|
||
fi
|
||
|
||
# 设置环境变量
|
||
export CONSUL_ADDR
|
||
export ENVIRONMENT
|
||
|
||
# 使用consul-template生成配置文件
|
||
echo "使用consul-template生成配置文件..."
|
||
$CONSUL_TEMPLATE_CMD \
|
||
-template="$CONSUL_CONFIG_DIR/consul.hcl.tmpl:$CONSUL_CONFIG_DIR/consul.hcl" \
|
||
-once \
|
||
-consul-addr="$CONSUL_ADDR"
|
||
|
||
# 验证生成的配置文件
|
||
if [ -f "$CONSUL_CONFIG_DIR/consul.hcl" ]; then
|
||
echo "配置文件生成成功: $CONSUL_CONFIG_DIR/consul.hcl"
|
||
|
||
# 验证配置文件语法
|
||
echo "验证配置文件语法..."
|
||
if consul validate $CONSUL_CONFIG_DIR/consul.hcl; then
|
||
echo "配置文件语法验证通过"
|
||
else
|
||
echo "错误: 配置文件语法验证失败"
|
||
exit 1
|
||
fi
|
||
else
|
||
echo "错误: 配置文件生成失败"
|
||
exit 1
|
||
fi
|
||
|
||
echo "Consul配置文件生成完成" |