我怎么能通过 |作为从 Ansible 库存到 Helm values.yml 的文本
Posted
技术标签:
【中文标题】我怎么能通过 |作为从 Ansible 库存到 Helm values.yml 的文本【英文标题】:How can i pass | as text from Ansible inventory to Helm values.yml 【发布时间】:2021-08-08 20:30:25 【问题描述】:我想为我的 grafana 入口添加自定义注释,我使用 Ansible 和 Helm 来部署入口。 Helm 值是:
grafana:
ingress:
annotations:
nginx.ingress.kubernetes.io/server-snippet: |
http2_max_header_size 16k;
http2_max_field_size 16k;
enabled: true
hosts:
- grafana.XXXX
问题是使用 Ansible 创建此值文件。 我无法按原样传递原始的 sn-p。我得到的结果是:
grafana:
ingress:
annotations:
nginx.ingress.kubernetes.io/server-snippet: 'http2_max_header_size 16k;
http2_max_field_size 16k;
'
enabled: true
hosts:
- grafana.XXXXX
(创建我使用 to_nice_yaml 格式的文件)
知道如何按原样传递这些变量吗?
【问题讨论】:
【参考方案1】:这两种形式是等价的,往返于from_yaml | to_yaml
甚至to_json
会证明:
...
"annotations":
"nginx.ingress.kubernetes.io/server-snippet": "http2_max_header_size 16k;\nhttp2_max_field_size 16k;\n"
,
...
The fine manual 正确地声称| to_yaml
尊重all the flags from PyYAML,正如人们所看到的那样:
- debug:
msg: >-
awesome | to_yaml(default_style="|")
vars:
awesome:
has_newlines: "this is awesome;\nso is this;\n"
转换为您想要的: |
样式:
"has_newlines": |
this is awesome;
so is this;
【讨论】:
感谢您的回答:) 我不能使用它,因为我有更多注释,我不想更改它们的默认样式。我也不想把它改成 json-我所有的其他图表都在 yaml 你知道其他方法吗? 在 PyYAML 文档中提到了自定义格式化程序类,但老实说,您正在为一个 机器可读 文件创建虚荣输出而进行艰苦的战斗。计算机不在乎,因此应仔细考虑使用 ansible 处理该文件是否解决了正确的问题以上是关于我怎么能通过 |作为从 Ansible 库存到 Helm values.yml 的文本的主要内容,如果未能解决你的问题,请参考以下文章