Я пытаюсь написать сценарий развертывания с солью. В основном это работает. Мне нужно пару раз запустить highstate, чтобы он работал полностью. Моя самая большая проблема заключается в том, как выполнять команды одну за другой на основе конкретной первой, и они фактически заканчивают / работают.
Вот мое солевое состояние 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
на самом деле не работает. Результатом работы salt является то, что он запустился, но ни одно из требований в файле requirements.txt не было установлено.
Я попытался изложить требования в virtualenv.managed
раздел, чтобы запустить его, но в этот момент мне нужно запустить 2 высоких состояния. 1) чтобы получить последнюю версию от git, похоже, бот запускается исключительно 2) для установки требований. Почему-то даже после установки virtualenv.managed
раздел после demo
он по-прежнему не регистрирует новый файл требований.
Я неправильно использую cmd
? Или у меня проблема с заказом?
Я наконец понял это. Похоже, это была проблема с правами доступа к файлу / папке. Я установил file.managed
для всех папок в /var/www
быть в группе www-data
. Также убедился, что все выполнено как www-data
, и после этого все заработало как положено.