Назад | Перейти на главную страницу

Прокрутите соляной столб, чтобы создать файл, не зная ключей

Задний план: Мне нужно сделать такой 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

Как создать соль из столба с помощью солонки?