bash - yq - 添加多行字符串
问题描述
我正在使用 yq (类似于 jq 但用于 yaml 文件)。我的目标是做到以下几点。我有一个看起来类似于的证书文件
-------BEGIN CERTIFICATE-------
asdoqijepoqjwe1i49i120941p2j4omslasdajsdqweqwe
qwelqjwkasdlajsölkjasldkjakljsdlkjasdasdpiqwe
-------END CERTIFICATE--------
我有一个看起来像这样的 yaml 文件(在本例中为 Openshift 模板)
apiVersion: v1
kind: Template
objects:
- apiVersion: v1
kind: Route
tls:
certificate:
key:
someOther: stuff
现在我的目标是将证书注入到 yaml 中,以便输出看起来像这样
apiVersion: v1
...
certificate: |
-------BEGIN CERTIFICATE-------
asdoqijepoqjwe1i49i120941p2j4omslasdajsdqweqwe
qwelqjwkasdlajsölkjasldkjakljsdlkjasdasdpiqwe
-------END CERTIFICATE--------
然而,互联网搜索和文档都没有任何帮助。我得到的最接近的是使用
yq w /tmp/template.yaml objects[0].tls.certificate "\n$(cat cert.pem)"
给我以下输出
certificate: !!binary |
fC0KLS0tLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0tLQphc2RvcWlqZXBvcWp3ZTFpND
lpMTIwOTQxcDJqNG9tc2zDYXNkYWpzZMNxd2Vxd2UKcXdlbHFqd2vDYXNkbGFqc8O2bGtq
YXNsZGtqYWtsanNkbGtqYXNkYXNkcGlxd2UKLS0tLS0tLUVORCBDRVJUSUZJQ0FURS0tLS
0tLS0t
奇怪的是,我想添加的那个的 base64 编码值前面是 !!binary |。任何想法发生了什么以及如何实现我想要的输出?
解决方案
我已经测试了@Inian 的建议yq3
并且它有效。
也可以yq4
使用以下语法来实现:
模板.yml
# template.yml
apiVersion: v1
kind: Template
objects:
- apiVersion: v1
kind: Route
tls:
certificate:
key:
someOther: stuff
证书.pem
-------BEGIN CERTIFICATE-------
asdoqijepoqjwe1i49i120941p2j4omslasdajsdqweqwe
qwelqjwkasdlajsölkjasldkjakljsdlkjasdasdpiqwe
-------END CERTIFICATE--------
命令
yq eval '.objects[0].tls.certificate = "'"$(< cert.pem)"'"' template.yml
输出
apiVersion: v1
kind: Template
objects:
- apiVersion: v1
kind: Route
tls:
certificate: |-
-------BEGIN CERTIFICATE-------
asdoqijepoqjwe1i49i120941p2j4omslasdajsdqweqwe
qwelqjwkasdlajsölkjasldkjakljsdlkjasdasdpiqwe
-------END CERTIFICATE--------
key:
someOther: stuff
推荐阅读
- file - 如何使用 JMeter 将 zip 文件放入服务器?
- jqassistant - @jQAsuppress 中具有多个约束的 jQAssistant 不起作用
- python - 使用 PIL Python 向图像添加文本后如何保留图像的原始颜色?
- scrapy - 如何通过 os.execl 重启scrapy spider
- python - TypeError:_log() 得到了一个意外的关键字参数“stacklevel”
- c# - 在 Blazor 客户端 AuthorizationHandler 中访问 RouteData
- reactjs - Redux-persist 库:将持久化数据传递给反应组件
- amazon-web-services - 如果没有可用的现场实例,具有 MixedInstancesPolicy 的 AWS Autoscaling 组会启动按需实例吗?
- python - python中的Opencv:如何通过管道找到一个点?
- javascript - 在 JS 中将浮点数转换为时间