盐:在jinja if-else状态下使用盐状态

时间:2018-04-30 05:07:33

标签: django salt

我正在尝试使用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'

我该如何解决这个问题?谢谢。

1 个答案:

答案 0 :(得分:0)

我是个傻瓜...... {% if not salt['file.directory_exists'](BASEDIR + 'myproject/static') %} 运作良好。 问题是我使用的是状态模块而不是salt的执行模块。 现在我明白状态模块描述" state"和执行模块就像一个函数。