使用 python 或 sed 在特定位置的 yaml 中添加键值

Adding key-values in yaml at specific location using python or sed

我正在尝试在 values.yaml 中准确地在特定位置添加以下键值,sed 没有太大帮助,因为它打破了 yaml 的缩进。有没有其他方法可以解决这个问题。

例如: 示例 yaml

所需的 yaml

使用 sed,您可以这样在 livenessProbe 之前插入一段文本:

sed -e '/livenessProbe/i\
volumes:\n- name: my-agent\n  persistentVolume:\n  claimName: my-agent
' sample.yaml

如果sample.yaml

resources:
  limits:
    cpu: 500m
    memory: 2Gi
  requests:
    cpu: 100m
    memory: 512Mi
livenessProbe:
  httpGetPath: /heartbeat

结果将是:

resources:
  limits:
    cpu: 500m
    memory: 2Gi
  requests:
    cpu: 100m
    memory: 512Mi
volumes:
- name: my-agent
  persistentVolume:
  claimName: my-agent
livenessProbe:
  httpGetPath: /heartbeat

如果要添加的代码块在yaml文件中addons.yaml:

sed -e "/livenessProbe/i\
$(cat addons.yaml | sed ':a;N;$!ba;s/\n/\n/g')
" sample.yaml