Задний план: Мне нужно сделать такой 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"monitor@email.com" />
</appSettings>
</configuration>
Я хотел бы создать этот файл динамически, чтобы мы могли просто добавлять новые переменные в pillar без необходимости изменять шаблон jinja для управляемого файла. Могу ли я зациклить пары ключ / значение, не зная ключей?
Например, скажем мой pillar.sls выглядит так:
scriptvars:
BaseOU: DC=myplace,DC=wan
OurOU: OU=Users,DC=myplace,DC=wan
EmailServer: email.server.com
EmailRecipient: monitor@email.com
и я создаю состояние, которое управляет файлом 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>
Вопрос: Как мне добавить новую запись в scriptvars в моем pillar.sls и заставить цикл for в шаблоне jinja поднять ее (когда я применяю состояние - это не вопрос о маяках / реакторах) и добавить ее в управляемый файл? Я думаю, что проблема в моем цикле jinja for или синтаксисе, но я не могу найти никакой информации в Интернете. Большое спасибо за понимание.
Я нашел ответ, и это оказалось намного проще, чем я ожидал (к сожалению, поиск в Интернете не сильно помог, потому что в столбе всегда обсуждаются ключи и значения).
Это очень просто:
<?xml version="1.0"?>
<configuration>
<appSettings>
{% for key, value in pillar['scriptvars'].items() %}
<add key="{{ key }}" value="{{ value }}" />
{% endfor %}
</appSettings>
</configuration>
Важная заметка: .items () предназначен для версии соли для Python 3. Если вы используете версию python 2, вам следует обновить ее - это 2019 год.
Спасибо им за то, что указали мне правильное направление:
https://stackoverflow.com/questions/31854153/how-to-get-key-value-in-salt