延迟命令的执行,直到其他事情已经运行

我正在尝试编写一个盐的部署脚本。 它大部分工作。 我必须运行一段时间的高速状态才能完成。 我最大的问题是如何根据具体的第一个执行命令,并且他们实际上正在完成/工作。

这是我的demo.sls盐状态:

{% set web_root = "/var/www/demo/" %} /var/www/venv/demo: virtualenv.managed: - system_site_packages: False - require: - pkg: python-virtualenv demo: git.latest: - name: git://localhost/demo.git - target: {{ web_root }} demo_pip: cmd.wait: - name: 'source /var/www/venv/demo/bin/activate && pip install -r requirements.txt' - cwd: {{ web_root }} - watch: - git: demo run_migrations: cmd.wait: - name: 'source /var/www/venv/demo/bin/activate && python manage.py syncdb --noinput' - cwd: {{ web_root }} - watch: - cmd: demo_pip restart_gunicorn: cmd.wait: - name: supervisorctl restart gunicorn - watch: - cmd: run_migrations 

我已经设置了这样的demo_pip后git调用运行(这很好),但说实话demo_pip实际上并没有运行。 盐的输出是运行的,但没有安装requirements.txt的要求。

我试图把要求放在virtualenv.managed部分,以便运行它,但是我必须在那个时候运行2个highstates。 1)从git得到最新的,似乎运行bot独占2)安装的要求。 由于某些原因,即使在demo之后放置virtualenv.managed节,它仍然不会注册新的需求文件。

我使用错误的cmd ? 或者我有订单问题?

我终于明白了这一点。 它看起来像是一个文件/文件夹的权限问题。 我为/var/www所有文件夹设置了一个file.managed ,将其设置在组www-data 。 也确保一切都执行为www-data ,之后,事情开始像预期的工作。