我正在努力使我们的配置更模块化。目前,我们大多数情况下每个环境都有硬编码的模板文件,这些文件与jinja处于init状态的每个环境相匹配。我正在分解状态、配置,并添加一些需要在所有环境中保持相同配置值的默认值。
下面是我的支柱的一个例子:
/../pillars/amq/amq.sls
default_routes:
Queue1:
- from_uri: 'activemq:fromSomeURI1'
- process_ref: 'processorName1'
- to_uri: 'activemq:toSomeOutURI1'
Queue2:
- from_uri: 'activemq:fromSomeURI2'
- process_ref: 'processorName2'
- to_uri: 'activemq:toSomeOutURI2'
下面是我的模板文件示例:
/../salt/amq/conf/camel.xml.template
lines lines lines
lines lines lines
...
{% for route, args in pillar.get('default_routes', {}).items() %}
<route>
<from uri="{{ route.from_uri }}"/>
<process ref="{{ route.process_ref }}"/>
<to uri="{{ route.to_uri }}"/>
</route>
{% endfor %}
...
lines lines lines
lines lines lines
我需要做的是在pillar中添加一个值字典,并在camel.xml.template中遍历默认值列表,构建所有环境中的默认路由。支柱还将存储特定于环境的值,我将以非常类似的方式将这些值添加到文件中。
任何帮助都非常感谢。我尝试了很多不同的方法,要么得到一个错误,要么从文件中删除默认行。
谢谢!
你对支柱的定义有一些不一致之处。
使用this tool,将YAML转换为Python
我想你的意思是
你应该把你的山药改成
但即便如此,你的模板还是有缺陷
这一行将把
route
设置为键名,将args
设置为字典。因此,第一次,route
将是Queue1
,而args
将是字典的其余部分。您必须将
{{ route.from_uri }}
更改为{{ args.from_uri }}
,因为args是实际的字典,它具有类似from_uri
的键相关问题 更多 >
编程相关推荐