JCS-pub/deploy/arm64/yaml/replace.sh

110 lines
3.5 KiB
Bash

#!/bin/bash
# 配置文件路径
config_file="config.ini"
# YAML 模板文件路径
agent_template_file="template/rclone-agent.yaml.template"
rclone_pv_template_file="template/rclone-pv.yaml.template"
coordinator_template_file="template/coordinator.yaml.template"
scanner_template_file="template/scanner.yaml.template"
client_template_file="template/client.yaml.template"
image_registry_address=$(awk -F "=" '/\[General\]/{f=1} f==1 && /image_registry/{print $2; exit}' "$config_file")
# 逐行读取文件
while IFS= read -r line; do
# 判断是否是标题行
if [[ $line == \[*] ]]; then
current_section=$(echo "$line" | tr -d '[]')
case $current_section in
agent*)
echo "读取agent配置"
while IFS= read -r next_line && [[ $next_line ]]; do
case "$next_line" in
label=*) label=$(echo "$next_line" | cut -d '=' -f 2) ;;
port=*) port=$(echo "$next_line" | cut -d '=' -f 2) ;;
node=*) node=$(echo "$next_line" | cut -d '=' -f 2) ;;
esac
done
if [[ -n $label && -n $port && -n $node ]]; then
# 创建并替换 YAML 文件
agent_yaml_file="rclone_agent_$label.yaml"
#pv_yaml_file="rclone_pv_$label.yaml"
if [ ! -f "$agent_yaml_file" ]; then
sed "s/{{NODE_NAME}}/$label/g;
s/{{NODE_PORT}}/$port/g;
s/{{NODE_ID}}/$node/g;
s/{{IMAGE_REGISTRY_ADDRESS}}/$image_registry_address/g" "$agent_template_file" > "$agent_yaml_file"
fi
#if [ ! -f "$pv_yaml_file" ]; then
# sed "s/{{NODE_NAME}}/$label/g" "$rclone_pv_template_file" > "$pv_yaml_file"
#fi
# 清空变量,以便下一个节点的处理
label=""
port=""
node=""
fi
;;
coordinator)
echo "读取coordinator配置"
while IFS= read -r next_line && [[ $next_line ]]; do
case "$next_line" in
label=*) coor_label=$(echo "$next_line" | cut -d '=' -f 2) ;;
node=*) coor_node=$(echo "$next_line" | cut -d '=' -f 2) ;;
esac
done
if [[ -n $coor_label && -n $coor_node ]]; then
coor_yaml_file="coordinator.yaml"
if [ ! -f "$coor_yaml_file" ]; then
sed "s/{{NODE_NAME}}/$coor_label/g;
s/{{IMAGE_REGISTRY_ADDRESS}}/$image_registry_address/g" "$coordinator_template_file" > "$coor_yaml_file"
fi
fi
;;
scanner)
echo "读取scanner配置"
while IFS= read -r next_line && [[ $next_line ]]; do
case "$next_line" in
label=*) scan_label=$(echo "$next_line" | cut -d '=' -f 2) ;;
node=*) scan_node=$(echo "$next_line" | cut -d '=' -f 2) ;;
esac
done
if [[ -n $scan_label && -n $scan_node ]]; then
scan_yaml_file="scanner.yaml"
if [ ! -f "$scan_yaml_file" ]; then
sed "s/{{NODE_NAME}}/$scan_label/g;
s/{{IMAGE_REGISTRY_ADDRESS}}/$image_registry_address/g" "$scanner_template_file" > "$scan_yaml_file"
fi
fi
;;
client)
echo "读取client配置"
while IFS= read -r next_line && [[ $next_line ]]; do
case "$next_line" in
label=*) cli_label=$(echo "$next_line" | cut -d '=' -f 2) ;;
port=*) cli_port=$(echo "$next_line" | cut -d '=' -f 2) ;;
node=*) cli_node=$(echo "$next_line" | cut -d '=' -f 2) ;;
esac
done
if [[ -n $cli_label && -n $cli_port && -n $cli_node ]]; then
cli_yaml_file="client.yaml"
if [ ! -f "$cli_yaml_file" ]; then
sed "s/{{NODE_NAME}}/$cli_label/g;
s/{{NODE_PORT}}/$cli_port/g;
s/{{IMAGE_REGISTRY_ADDRESS}}/$image_registry_address/g" "$client_template_file" > "$cli_yaml_file"
fi
fi
;;
esac
fi
done < "$config_file"