状态file.managed
具有用于模板渲染的defaults
和context
选项。两者都为模板变量提供上下文。它们之间有什么区别?
>defaults
是回退默认值,如果模板没有正确的值context
则会传递给模板。如果context
有一个值 - 它将覆盖default
。例如:
/etc/myconfig.cfg:
- file.managed:
- source: salt://myconfig.tmpl
- template: jinja
- defaults:
foo: bar
- context:
foo: baz
在这种情况下,foo
的值将始终baz
。通常,当您需要条件值时,会使用context
。例如:
/etc/myconfig.cfg:
- file.managed:
- source: salt://myconfig.tmpl
- template: jinja
- defaults:
foo: bar
{% if salt[grains.get]("os") == 'Debian' %}
- context:
foo: baz
{% endif %}
在这种情况下,每个非 Debian 系统最终都会有价值bar
,而 Debian 会在模板中baz
。