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