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