-
Notifications
You must be signed in to change notification settings - Fork 8
/
app.sls
90 lines (82 loc) · 2.19 KB
/
app.sls
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
{% import 'project/_vars.sls' as vars with context %}
include:
- supervisor.pip
- project.dirs
- project.venv
- project.django
- postfix
- ufw
- nodejs
- project.npm
gunicorn_requirements:
pip.installed:
- name: "gunicorn>=19.1,<19.2"
- bin_env: {{ vars.venv_dir }}
- upgrade: true
- require:
- virtualenv: venv
gunicorn_conf:
file.managed:
- name: /etc/supervisor/conf.d/{{ pillar['project_name'] }}-gunicorn.conf
- source: salt://project/web/gunicorn.conf
- user: root
- group: root
- mode: 600
- template: jinja
- context:
log_dir: "{{ vars.log_dir }}"
settings: "{{ pillar['project_name'] }}.settings.deploy"
virtualenv_root: "{{ vars.venv_dir }}"
directory: "{{ vars.source_dir }}"
use_newrelic: {{ vars.use_newrelic }}
- require:
- pip: supervisor
- file: log_dir
- pip: pip_requirements
- pip: gunicorn_requirements
- watch_in:
- cmd: supervisor_update
gunicorn_process:
supervisord.running:
- name: {{ pillar['project_name'] }}-server
- restart: True
- require:
- file: gunicorn_conf
{% for host, ifaces in vars.balancer_minions.items() %}
app_allow-{{ vars.get_primary_ip(host, ifaces) }}:
ufw.allow:
- name: '8000'
- enabled: true
- from: {{ vars.get_primary_ip(host, ifaces) }}
- require:
- pkg: ufw
{% endfor %}
less:
cmd.run:
- name: npm install less@{{ pillar['less_version'] }} -g
- user: root
- unless: "which lessc && lessc --version | grep {{ pillar['less_version'] }}"
- require:
- pkg: nodejs
file.symlink:
- name: /usr/bin/lessc
- target: /usr/local/bin/lessc
- user: root
- require:
- cmd: less
collectstatic:
cmd.run:
- name: "{{ vars.path_from_root('manage.sh') }} collectstatic --noinput"
- user: {{ pillar['project_name'] }}
- group: {{ pillar['project_name'] }}
- require:
- file: manage
- cmd: npm_run_build
migrate:
cmd.run:
- name: "{{ vars.path_from_root('manage.sh') }} migrate --noinput"
- user: {{ pillar['project_name'] }}
- group: {{ pillar['project_name'] }}
- require:
- file: manage
- order: last