yaml - 使用 yq 修改 YAML 以在元数据的每个条目下包含标签
问题描述
我有一个如下所示的 yaml 文件。这个 yaml 文件需要在每个 configmap 下使用新标签进行修补。
apiVersion: v1
kind: ConfigMapList
items:
- apiVersion: v1
data:
test: 1
kind: ConfigMap
metadata:
name: grafana-dashboard-apiserver1
namespace: monitoring
- apiVersion: v1
data:
test: 2
kind: ConfigMap
metadata:
name: grafana-dashboard-apiserver2
namespace: monitoring
- apiVersion: v1
data:
test: 3
kind: ConfigMap
metadata:
name: grafana-dashboard-apiserver3
namespace: monitoring
我想在这个 configmaplist 中的每个 configmap 下插入标签,如下所示,
apiVersion: v1
kind: ConfigMapList
items:
- apiVersion: v1
data:
test: 1
kind: ConfigMap
metadata:
name: grafana-dashboard-apiserver1
namespace: monitoring
labels:
grafana_dashboard: "1"
- apiVersion: v1
data:
test: 2
kind: ConfigMap
metadata:
name: grafana-dashboard-apiserver2
namespace: monitoring
labels:
grafana_dashboard: "1"
- apiVersion: v1
data:
test: 3
kind: ConfigMap
metadata:
name: grafana-dashboard-apiserver3
namespace: monitoring
labels:
grafana_dashboard: "1"
我不确定如何在 bash 中执行此操作..请帮助我如何执行此操作 ..yq 有帮助吗?还是自定义?
解决方案
如果您使用的是mikefarah/yq ,则可以使用以下路径表达式在数组metadata
下的所有字段上写入items
yq w yaml 'items[*].metadata.labels.grafana_dashboard' --tag '!!str' 1
如果生成的 YAML 输出符合预期,您可以使用标志就地写入,即-i
yq w -i '..'
推荐阅读
- sql - 在 excel 数据集中什么被认为是足够的验证
- angular - Swagger-codegen 不将枚举生成为枚举类型
- javascript - 将鼠标悬停在文本上以显示其他文本
- kotlin - 将 LinkedHasSet 从一种类型转换为另一种
- javascript - 在不更改 DOM 元素的情况下,获取 Html 代码、替换部件并以字符串形式存储在变量中
- python - 在 python 中循环遍历列表的一部分时,我无法正确索引
- reactjs - React:如果子组件不返回null,则将其包装在div中
- freertos - FreeRTOS Mutex 意外行为
- ruby-on-rails - 验证阻止使用嵌套属性创建记录
- javascript - Identity Server 登录页面在哪里以及如何自定义?