我正在构建一个头盔图,并且我的values.yaml文件出了问题。由于yaml本身不支持变量,我尝试了锚点,但是虽然这样的东西有效:
foo: &anchor A
bar: *anchor
带输出
foo: A
bar: A
我需要将锚附加到某些字符串,例如
foo: &anchor A
baz: &anotherAnchor B
bar: www.*anchor.*anotherAnchor.com
带输出
foo: A
baz: B
bar: www.A.B.com
甚至可以这样做吗?
答案 0 :(得分:1)
不是今天存在的YAML。 YAML没有用于转换数据的功能。人们倾向于使用像Jinja这样的模板引擎来做这样的事情作为预处理步骤(参见Ansible,SaltStack等)。
请注意,虽然锚点/别名功能似乎经常用于重复数据删除,但这绝不是意图。它们最初用于序列化可能包含循环的内存数据结构,或者多个变量指向同一对象的任何其他内容。在YAML语义中,前两个代码片段不完全相同,因为第一个代码片段定义一个字符串对象didFailedToRegisrer...
,它在两个位置引用,而第二个定义 2 字符串对象A
。但是,对于配置数据,这通常没有区别(除非在内存中修改配置并将其写回)。
这就是为什么YAML缺少任何允许像你想要的那样的操作的转换功能。