Соль: использование солевого состояния в состоянии "если-еще" - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь развернуть проект Django с Saltstack.

Я написал файл sls, и он устанавливает пакеты и запускает некоторые команды.

Он устанавливает django, nginx и т. Д., И я хочу запустить manage.py collectstatic для nginx.

но при повторном применении этой формулы возвращается ошибка, что каталог / static уже существует.

поэтому я изменил файл sls

collect_static_files:
{% if not salt['file.exists'][BASEDIR,'myproject/static']|join('') %}
  cmd.run:
    - name: '~~~ collectstatic;'
    - cwd: /path/to/venv/bin
{% else %}
  cmd.run:
    - name: echo "Static directory exists."
{% endif %}

но когда я бегу salt '*' state.apply myformula,

Там написано:

minion:
 Data failed to compile:
----------
    Rendering SLS 'base:myproj' failed: Jinja variable 'salt.utils.templates.AliasedLoader object' has no attribute 'file.exists'

Как я могу решить эту проблему? Спасибо.

1 Ответ

0 голосов
/ 02 мая 2018

Я был дураком ... {% if not salt['file.directory_exists'](BASEDIR + 'myproject/static') %} работал хорошо. Проблема была в том, что я использовал модуль состояния, а не модуль выполнения соли. Теперь я понимаю, что модуль состояния описывает «состояние», а исполнительные модули действуют как функция.

...