Eu estou tentando escrever um script de implantação com sal. Isso funciona principalmente. Eu tenho que correr no estado de alta algumas vezes para que funcione todo o caminho. Meu maior problema é trabalhar com a execução de comandos, um após o outro, com base em um primeiro específico, e eles realmente concluindo / trabalhando.
Aqui está meu estado salt 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
Eu o configurei para que demo_pip
seja executado após a chamada do git (que funciona muito bem), mas, para ser sincero, demo_pip
não é executado de verdade. A saída do sal é que ele foi executado, mas nenhum dos requisitos no requirements.txt foi instalado.
Eu tentei colocar os requisitos na seção virtualenv.managed
para executá-la, mas tenho que executar 2 highstates nesse ponto. 1) para obter o mais recente do git, parece executar o bot exclusivamente 2) para instalar os requisitos. Por algum motivo, mesmo depois de colocar a seção virtualenv.managed
após demo
, ela ainda não registra o novo arquivo de requisitos.
Estou usando o cmd
errado? Ou eu tenho um problema de pedido?