Yaml saltstack,插入到模板中的多行支柱项目

Yaml saltstack,插入到模板中的多行支柱项目,yaml,salt-stack,Yaml,Salt Stack,我有一根柱子,看起来像这样: inline_blocks: the_seven: | dog cat horse cow ardvaark beatle snail 然后我想把它插入到一个文件中 {% set inline_block = pillar['inline_blocks'].get(val, '') %} /etc/animals.conf: file.managed: - source: salt://farm/animals.conf -

我有一根柱子,看起来像这样:

inline_blocks:
  the_seven: |
    dog cat horse cow
    ardvaark beatle snail
然后我想把它插入到一个文件中

{% set inline_block = pillar['inline_blocks'].get(val, '') %}
/etc/animals.conf:
  file.managed:
    - source: salt://farm/animals.conf
    - user: root
    - group: root
    - mode: 644
    - template: jinja
    - defaults:
        extras: {{ inline_block }}
然后在
anives.conf

{{ extras }}
我希望,如果键
val
位于
inline_块中
,则其值将被插入。如果不是,将插入一个空字符串

事实上,如果我显式地编写defaults语句,就会发生这种情况:

    - defaults:
        extras: |
          dog cat horse cow
          ardvaark beatle snail
但是如上所述,我得到了错误
无法找到预期的“:”

作为实际检查,
pillar.items
愉快地检索了支柱条目,因此(1)可以检索支柱条目,(2)可以插值该值,但是(X)在.sls文件中的多行值导致了问题

任何一个指针都指出了正确的语法是什么?

发生了什么

-默认值:
附加:{{inline_block}
加工成

-默认值:
附加节目:狗猫马牛
阿尔瓦克披头士蜗牛
因此YAML尝试将第二行解析为另一个顶级键。但是,标记此键结束的
从未出现,因此出现错误

要修复它,请执行以下操作:

-默认值:
额外费用:|
{{inline_block}缩进(10)}

缩进
不会缩进第一行,但会在随后的每一行中添加10个空格。

此问题也在a中讨论过,但针对
内容
参数。它似乎也适用于作为
默认值
上下文
传递的多行YAML块

因为您使用的是Jinja模板文件作为源,所以我们可以轻松地从模板本身获取支柱数据(正如上面链接中的一条注释所示)

将支柱视为:

inline_块:
瓦尔:|
狗猫马牛
阿尔瓦克披头士蜗牛
然后将
anives.conf.j2
模板设置为:

{{ salt.pillar.get('inline_blocks:val', default="foo") }}
注意:如果确保始终定义此支柱数据,我们甚至可以在模板中使用
支柱['inline_blocks']['val']

以如下状态呈现:

创建动物形态:
文件管理:
-名称:/tmp/animals.conf
-资料来源:salt://animals.conf.j2
-模式:0664
-模板:jinja
应按预期生成模板:

$ cat /tmp/animals.conf
dog cat horse cow
ardvaark beatle snail