You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

replace.sh 3.6 kB

1 year ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. #!/bin/bash
  2. # 配置文件路径
  3. config_file="config.ini"
  4. # YAML 模板文件路径
  5. agent_template_file="template/rclone-agent.yaml.template"
  6. rclone_pv_template_file="template/rclone-pv.yaml.template"
  7. coordinator_template_file="template/coordinator.yaml.template"
  8. scanner_template_file="template/scanner.yaml.template"
  9. client_template_file="template/client.yaml.template"
  10. image_registry_address=$(awk -F "=" '/\[General\]/{f=1} f==1 && /image_registry/{print $2; exit}' "$config_file")
  11. # 逐行读取文件
  12. while IFS= read -r line; do
  13. # 判断是否是标题行
  14. if [[ $line == \[*] ]]; then
  15. current_section=$(echo "$line" | tr -d '[]')
  16. case $current_section in
  17. agent*)
  18. echo "读取agent配置"
  19. while IFS= read -r next_line && [[ $next_line ]]; do
  20. case "$next_line" in
  21. label=*) label=$(echo "$next_line" | cut -d '=' -f 2) ;;
  22. port=*) port=$(echo "$next_line" | cut -d '=' -f 2) ;;
  23. node=*) node=$(echo "$next_line" | cut -d '=' -f 2) ;;
  24. esac
  25. done
  26. if [[ -n $label && -n $port && -n $node ]]; then
  27. # 创建并替换 YAML 文件
  28. agent_yaml_file="rclone_agent_$label.yaml"
  29. #pv_yaml_file="rclone_pv_$label.yaml"
  30. if [ ! -f "$agent_yaml_file" ]; then
  31. sed "s/{{NODE_NAME}}/$label/g;
  32. s/{{NODE_PORT}}/$port/g;
  33. s/{{NODE_ID}}/$node/g;
  34. s/{{IMAGE_REGISTRY_ADDRESS}}/$image_registry_address/g" "$agent_template_file" > "$agent_yaml_file"
  35. fi
  36. #if [ ! -f "$pv_yaml_file" ]; then
  37. # sed "s/{{NODE_NAME}}/$label/g" "$rclone_pv_template_file" > "$pv_yaml_file"
  38. #fi
  39. # 清空变量,以便下一个节点的处理
  40. label=""
  41. port=""
  42. node=""
  43. fi
  44. ;;
  45. coordinator)
  46. echo "读取coordinator配置"
  47. while IFS= read -r next_line && [[ $next_line ]]; do
  48. case "$next_line" in
  49. label=*) coor_label=$(echo "$next_line" | cut -d '=' -f 2) ;;
  50. node=*) coor_node=$(echo "$next_line" | cut -d '=' -f 2) ;;
  51. esac
  52. done
  53. if [[ -n $coor_label && -n $coor_node ]]; then
  54. coor_yaml_file="coordinator.yaml"
  55. if [ ! -f "$coor_yaml_file" ]; then
  56. sed "s/{{NODE_NAME}}/$coor_label/g;
  57. s/{{IMAGE_REGISTRY_ADDRESS}}/$image_registry_address/g" "$coordinator_template_file" > "$coor_yaml_file"
  58. fi
  59. fi
  60. ;;
  61. scanner)
  62. echo "读取scanner配置"
  63. while IFS= read -r next_line && [[ $next_line ]]; do
  64. case "$next_line" in
  65. label=*) scan_label=$(echo "$next_line" | cut -d '=' -f 2) ;;
  66. node=*) scan_node=$(echo "$next_line" | cut -d '=' -f 2) ;;
  67. esac
  68. done
  69. if [[ -n $scan_label && -n $scan_node ]]; then
  70. scan_yaml_file="scanner.yaml"
  71. if [ ! -f "$scan_yaml_file" ]; then
  72. sed "s/{{NODE_NAME}}/$scan_label/g;
  73. s/{{IMAGE_REGISTRY_ADDRESS}}/$image_registry_address/g" "$scanner_template_file" > "$scan_yaml_file"
  74. fi
  75. fi
  76. ;;
  77. client)
  78. echo "读取client配置"
  79. while IFS= read -r next_line && [[ $next_line ]]; do
  80. case "$next_line" in
  81. label=*) cli_label=$(echo "$next_line" | cut -d '=' -f 2) ;;
  82. port=*) cli_port=$(echo "$next_line" | cut -d '=' -f 2) ;;
  83. node=*) cli_node=$(echo "$next_line" | cut -d '=' -f 2) ;;
  84. esac
  85. done
  86. if [[ -n $cli_label && -n $cli_port && -n $cli_node ]]; then
  87. cli_yaml_file="client.yaml"
  88. if [ ! -f "$cli_yaml_file" ]; then
  89. sed "s/{{NODE_NAME}}/$cli_label/g;
  90. s/{{NODE_PORT}}/$cli_port/g;
  91. s/{{IMAGE_REGISTRY_ADDRESS}}/$image_registry_address/g" "$client_template_file" > "$cli_yaml_file"
  92. fi
  93. fi
  94. ;;
  95. esac
  96. fi
  97. done < "$config_file"

本项目旨在将云际存储公共基础设施化,使个人及企业可低门槛使用高效的云际存储服务(安装开箱即用云际存储客户端即可,无需关注其他组件的部署),同时支持用户灵活便捷定制云际存储的功能细节。