Atrasar a execução do comando até que alguma outra coisa tenha sido executada

4

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?

    
por percent20 01.07.2014 / 23:10

1 resposta

1

Eu finalmente percebi isso. Parece que foi um problema de permissões de arquivo / pasta. Eu defino um file.managed para todas as pastas em /var/www no grupo www-data . Também certifiquei-me de que tudo foi executado como www-data e, depois disso, comecei a funcionar como esperado.

    
por 09.07.2014 / 00:24

Tags