使用yq修改YAML以在元数据的每个条目下包括标签

时间:2020-10-16 03:36:26

标签: yaml yq

我有一个如下所示的yaml文件。该yaml文件需要在每个configmap下打上新标签。

{this.state.CurrentAppointments.map(item => (
    <div key = {item.leadid}>
        <ListItem button 
            className={classes.listItem} 
            selectedLead = {item}
            onClick= {(event)=>this.handleRowSelected(item)} // event is the value to click and item is the value the map
    >
    <div>

我想在此configmap列表中的每个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    

我不确定如何在bash中执行此操作。请帮助我如何执行bash。是否对您有帮助?或Kustomize?

1 个答案:

答案 0 :(得分:1)

如果您使用的是mikefarah/yq,则可以使用以下路径表达式在array of items下的所有metadata字段上写

yq w yaml 'items[*].metadata.labels.grafana_dashboard' --tag '!!str' 1

如果产生的YAML输出符合预期,则可以使用-i标志yq w -i '..'

write in-place