欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > 将多个 k8s yaml 配置文件合并为一个文件

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

2025/1/19 3:34:16 来源:https://blog.csdn.net/catoop/article/details/144676656  浏览:    关键词:将多个 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 ]]; docase $1 in-i|--input)input_patterns+=("$2")shift 2;;-o|--output)output_file="$2"shift 2;;-delResourceVersion)del_resource_version=trueshift;;*)echo "未知参数: $1"exit 1;;esac
done# 检查是否有输入文件模式
if [ ${#input_patterns[@]} -eq 0 ]; thenecho "请使用 -i 参数指定至少一个匹配文件模式。"exit 1
fi# 清空或创建输出文件
> "$output_file"# 遍历所有匹配的文件并进行合并
for pattern in "${input_patterns[@]}"; dofor file in $pattern; doif [ -f "$file" ]; thencat "$file" >> "$output_file"echo "---" >> "$output_file"elseecho "警告:未找到文件模式 '$file' 匹配的文件。"fidone
done# 删除最后一个多余的 ---
truncate -s -4 "$output_file"# 如果指定了 -delResourceVersion,则删除所有 resourceVersion 行
if [ "$del_resource_version" = true ]; thensed -i '/^\s*resourceVersion:\s*'"'"'[0-9]\+'"'"'/d' "$output_file"
fiecho "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)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com