使用 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
我正在尝试在 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