Я пытаюсь настроить состояние, которое будет смотреть на домашние каталоги системы и перебирать их, чтобы проверять наличие определенных файлов. Для этого я изначально написал:
{% for userdir in salt['cmd.run']('ls /home').split('\n') %}
для моего цикла, и это отлично работает. Однако я хочу сделать его легко конфигурируемым для альтернативных сред, поэтому я решил хранить местоположения домашних каталогов внутри столба и изменил строку на:
{% for userdir in salt['cmd.run']('ls pillar['home']').split('\n') %}
что дало Jinja syntax error: expected token 'comma', got 'home';
я предполагаю из-за двойных наборов встроенных '
с
поэтому я попробовал:
{% for userdir in salt['cmd.run']('ls pillar["home"]').split('\n') %}
который дал мне: Rendering SLS failed: mapping values are not allowed here;
Я просмотрел столько ситуаций с петлями столба, сколько смог, чтобы попытаться найти пример, над которым я мог бы работать, но, похоже, его не существует.
Можно ли вызвать информацию о столбе из ls? Или есть лучший способ достичь этой цели?
Любая помощь будет оценена.
Вам просто нужно выполнить сопоставление вне строки:
{% for userdir in salt['cmd.run']('ls '+pillar['home']).split('\n') %}