我正在使用SaltStack,我正在尝试从另一个Pillar配置中重用嵌套字典的值 . 这是我正在尝试做的一个简单示例:
假设我有 pillar/app/common.sls
,其中包含以下内容:
app:
lookup:
custom1: 'change the default'
custom2: 'change the default'
service1:
value1: 'foo'
value2: 'bar'
list1:
- apple
- banana
value3: 'xen'
我的目标是在同一台机器上有一个新服务(并且YAML键是 service2
),但是以这样的方式设置,以便我试图将一个支柱扩展到另一个支柱 .
end result 将是:
app:
lookup:
custom1: 'change the default'
custom2: 'change the default'
service1:
value1: 'foo'
value2: 'bar'
list1:
- apple
- banana
value3: 'xen'
service2:
value1: 'foo'
value2: 'bar'
list1:
- apple
- banana
value3: 'future'
我用 pillar/app/someserver.sls
尝试了以下内容:
{% import_yaml "app/common.sls" as common %}
app:
service2:
{{ common.app.service1 }}
value3: 'future'
我发现 {{ common.app.service1 }}
成功渲染,但它不喜欢额外的 value3: 'future'
,这是我试图覆盖来自 common.sls
的 value3
.
我在Ubuntu Xenial 16.04.2上使用Salt 2016.11.4 . 任何想法都会有所帮助 . 谢谢!
1 回答
由于你的
common.app.service1
变量只不过是一个普通的Python dict,你应该可以使用update
来修改它 . 之后,您可以使用Jinja的yaml
过滤器将其渲染到新的支柱中: