当前位置: 首页 > article >正文

将多个 k8s yaml 配置文件合并为一个文件

如下bash脚本实现功能 “将多个k8s的yaml 配置文件” 合并为一个 yaml,使用 --- 分割文件配置。

创建文件 merge_yaml.sh ,内容如下:

#!/bin/bash

# 默认参数
input_patterns=()  # 匹配的文件模式数组
output_file="combined.yaml"  # 输出文件名,默认为 combined.yaml
del_resource_version=false   # 是否删除 resourceVersion 行,默认不删除

# 解析命令行参数
while [[ $# -gt 0 ]]; do
    case $1 in
        -i|--input)
            input_patterns+=("$2")
            shift 2
            ;;
        -o|--output)
            output_file="$2"
            shift 2
            ;;
        -delResourceVersion)
            del_resource_version=true
            shift
            ;;
        *)
            echo "未知参数: $1"
            exit 1
            ;;
    esac
done

# 检查是否有输入文件模式
if [ ${#input_patterns[@]} -eq 0 ]; then
    echo "请使用 -i 参数指定至少一个匹配文件模式。"
    exit 1
fi

# 清空或创建输出文件
> "$output_file"

# 遍历所有匹配的文件并进行合并
for pattern in "${input_patterns[@]}"; do
    for file in $pattern; do
        if [ -f "$file" ]; then
            cat "$file" >> "$output_file"
            echo "---" >> "$output_file"
        else
            echo "警告:未找到文件模式 '$file' 匹配的文件。"
        fi
    done
done

# 删除最后一个多余的 ---
truncate -s -4 "$output_file"

# 如果指定了 -delResourceVersion,则删除所有 resourceVersion 行
if [ "$del_resource_version" = true ]; then
    sed -i '/^\s*resourceVersion:\s*'"'"'[0-9]\+'"'"'/d' "$output_file"
fi

echo "YAML 文件已成功合并到 $output_file"

使用方法示例:

现在你可以更简洁地调用脚本:

1、合并所有 .yaml 文件到 output.yaml 并删除 resourceVersion 行

./merge_yaml.sh -i "*.yaml" -o "output.yaml" -delResourceVersion

2、合并特定前缀的 YAML 文件到 output.yaml

./merge_yaml.sh -i "res/file*.yaml" -o "output.yaml"

3、合并多个不同模式的文件到 output.yaml

./merge_yaml.sh -i "file1_*.yaml" -i "file2_*.yaml" -o "output.yaml"

注意文件使用双引号包括。


(END)


http://www.kler.cn/a/453660.html

相关文章:

  • 虚幻引擎结构之UObject
  • 【Spring】基于XML的Spring容器配置—— <import>标签的使用
  • Golang的文件解压技术研究与应用案例
  • 潮玩设备AI语音交互方案,ESP32-S3芯片模组物联网通信技术
  • echarts进度仪表盘形式
  • Java线程池面试题
  • 32单片机综合案例——智能环境监控系统
  • 数据交易和联邦学习的背景下的安全属性
  • 使用 Wails 创建桌面应用(一)
  • Vue前端开发-Pinia模块安装与配置
  • 详解VHDL如何编写Testbench
  • 本原多项式
  • Quartz 相关线程
  • springboot498基于javaweb的宠物猫认养系统(论文+源码)_kaic
  • opencv(15) OpenCV背景减除器(Background Subtractors)学习
  • mui框架开发的手机app--爱分销【无后端】
  • Spring Boot Web服务接口处理JSON入参时首字母大写问题的解决方案
  • 记一次rac故障原因分析(虚拟化平台)
  • 【搭建一个网上商城系统】
  • 大模型应用技术系列(三): 深入理解大模型应用中的Cache:GPTCache