我正在尝试使用saltstack部署django项目。
我写了一个sls文件,它安装包并运行一些命令。
它会安装django,nginx等,我想为nginx运行manage.py collectstatic
。
但是当我重新应用这个公式时,它会返回一个错误,即/ 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'
我该如何解决这个问题?谢谢。
答案 0 :(得分:0)
我是个傻瓜......
{% if not salt['file.directory_exists'](BASEDIR + 'myproject/static') %}
运作良好。
问题是我使用的是状态模块而不是salt的执行模块。
现在我明白状态模块描述" state"和执行模块就像一个函数。