背景:我需要制作一个这样的 XML 文件:
<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="BaseOU" value="DC=myplace,DC=wan" />
<add key="OurOU" value="OU=Users,DC=myplace,DC=wan" />
<add key="EmailServer" value"email.server.com" />
<add key="EmailRecipient" value"[email protected]" />
</appSettings>
</configuration>
我想动态构建这个文件,这样我们就可以简单地向支柱添加新变量,而无需更改托管文件的 jinja 模板。我可以在不知道键的情况下遍历支柱键/值对吗?
例如,假设我的pillar.sls如下所示:
scriptvars:
BaseOU: DC=myplace,DC=wan
OurOU: OU=Users,DC=myplace,DC=wan
EmailServer: email.server.com
EmailRecipient: [email protected]
我创建了一个管理文件 C:\script-config.xml 的状态,源代码是一个jinja 模板,类似于:
<?xml version="1.0"?>
<configuration>
<appSettings>
{% for unknownPillarKey in pillar.get['scriptvars'] %}
<add key="unknownPillarKey" value="{{ pillar['unknownPillarKey'] }}" />
{% endfor %}
</appSettings>
</configuration>
问题:如何在我的pillar.sls 中向scriptvars 添加一个新条目并让jinja 模板中的for 循环将其拾取(当我应用状态时——这不是关于信标/反应器的问题)并将其添加到托管文件?我认为问题在于我的 jinja for 循环或语法,但我在网上找不到任何信息。非常感谢您的任何见解。
我找到了答案,这比我预期的要容易得多(不幸的是,在线搜索并没有太大帮助,因为柱子总是很好地讨论键和值)。
它很简单,如下所示:
重要说明: .items() 是用于盐的 python 3 版本。如果你使用的是 python 2 版本,你应该升级——现在是 2019 年。
感谢这些为我指出正确的方向:
https://stackoverflow.com/questions/31854153/how-to-get-key-value-in-salt
如何使用盐堆从柱子中制造盐?