42 |
Something is wrong with PyPI
43 |
44 | PyPI is down for maintenance or is having an outage.
45 | Packages and the simple index are still being served via our CDN.
46 |
47 | Check http://status.python.org or
48 | follow @PythonStatus for updates.
49 |
50 |
51 |
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/provisioning/salt/roots/salt/pypi/log.sls:
--------------------------------------------------------------------------------
1 |
2 | include:
3 | - redis
4 | - pypi.base
5 |
6 | rsyslog:
7 | service:
8 | - running
9 | - enable: True
10 | - restart: True
11 | - watch:
12 | - file: /etc/rsyslog.d/*.conf
13 |
14 | /etc/redis.conf:
15 | file.comment:
16 | - regex: "^bind 127.0.0.1$"
17 |
18 | redis-bind-all:
19 | file.append:
20 | - name: /etc/redis.conf
21 | - text: "bind 0.0.0.0"
22 |
23 | vm.overcommit_memory:
24 | sysctl.present:
25 | - value: 1
26 |
27 | redis-daemon:
28 | service:
29 | - name: redis
30 | - running
31 | - restart: True
32 | - watch:
33 | - file: /etc/redis.conf
34 | - require:
35 | - pkg: redis28
36 | - file: /etc/redis.conf
37 | - sysctl: vm.overcommit_memory
38 |
39 | {% set deploys = {} %}
40 | {% for k,v in pillar.items() %}
41 | {% if k.startswith('pypi-deploy-') %}
42 | {% do deploys.update({k: v}) %}
43 | {% endif %}
44 | {% endfor %}
45 |
46 | {% for key, config in deploys.items() %}
47 |
48 | /etc/rsyslog.d/{{ config['name'] }}.conf:
49 | file.managed:
50 | - source: salt://pypi/config/pypi.rsyslog.conf.jinja
51 | - template: jinja
52 | - context:
53 | path: {{ config['path'] }}
54 | syslog_name: {{ config['fastly_syslog_name'] }}
55 |
56 | /etc/logrotate.d/{{ config['name'] }}-cdn:
57 | file.absent
58 |
59 | /etc/logrotate-{{config['name']}}-cdn.conf:
60 | file.managed:
61 | - source: salt://pypi/config/pypi-syslog.logrotate.conf
62 | - template: jinja
63 | - context:
64 | syslog_name: {{ config['fastly_syslog_name'] }}
65 |
66 | {{config['name']}}-hourly-logrotate-cron:
67 | cron.present:
68 | - name: /usr/sbin/logrotate -f /etc/logrotate-{{config['name']}}-cdn.conf
69 | - minute: '0'
70 | - user: root
71 |
72 | {% if 'cron_workers' in grains['roles'] %}
73 | {{ config['user'] }}-index-for-search-cron:
74 | cron.present:
75 | - name: {{ config['path'] }}/env/bin/python {{ config['path'] }}/src/tools/index.py
76 | - minute: '6'
77 | - hour: '*/1'
78 | - user: {{ config['user'] }}
79 |
80 | {{ config['user'] }}-index-for-trove-cron:
81 | cron.present:
82 | - name: {{ config['path'] }}/env/bin/python {{ config['path'] }}/src/tools/index-trove.py
83 | - minute: '36'
84 | - hour: '*/1'
85 | - user: {{ config['user'] }}
86 | {% endif %}
87 |
88 | {% endfor %}
89 |
--------------------------------------------------------------------------------
/provisioning/salt/roots/salt/pypi/web.sls:
--------------------------------------------------------------------------------
1 |
2 | include:
3 | - pypi.base
4 | - nginx
5 | - redis
6 | - supervisor
7 | - monitoring.client.pypi-backend
8 | {% if 'develop' in grains['roles'] %}
9 | - postgresql.93
10 | - pypi.dev-db
11 | {% endif %}
12 |
13 | net.core.somaxconn:
14 | sysctl.present:
15 | - value: 1024
16 |
17 | /opt/pypi-docs-proxy/env:
18 | virtualenv.managed:
19 | - venv_bin: /usr/bin/virtualenv
20 | - python: /usr/bin/python2.7
21 | - system_site_packages: False
22 |
23 | pypi-docs-proxy-eventlet:
24 | pip.installed:
25 | - name: eventlet
26 | - bin_env: /opt/pypi-docs-proxy/env
27 | - require:
28 | - virtualenv: /opt/pypi-docs-proxy/env
29 |
30 | pypi-docs-proxy:
31 | pip.installed:
32 | - name: pypi-docs-proxy == 1.4
33 | - bin_env: /opt/pypi-docs-proxy/env
34 | - require:
35 | - virtualenv: /opt/pypi-docs-proxy/env
36 |
37 | {% set deploys = {} %}
38 | {% for k,v in pillar.items() %}
39 | {% if k.startswith('pypi-deploy-') %}
40 | {% do deploys.update({k: v}) %}
41 | {% endif %}
42 | {% endfor %}
43 |
44 | {% for key, config in deploys.items() %}
45 |
46 | {% if config['data_device']['type'] == "local" %}
47 |
48 | {{ config['data_mount'] }}:
49 | file.directory:
50 | - user: {{ config['user'] }}
51 | - group: {{ config['group'] }}
52 | - mode: 755
53 | - makedirs: True
54 | - require:
55 | - user: {{ config['user'] }}
56 |
57 | {% else %}
58 |
59 | {{ config['data_mount'] }}:
60 | mount.mounted:
61 | - device: {{ config['data_device']['uri'] }}
62 | - fstype: {{ config['data_device']['type'] }}
63 | - mkmnt: True
64 | - opts:
65 | - defaults
66 | file.directory:
67 | - user: {{ config['user'] }}
68 | - group: {{ config['group'] }}
69 | - mode: 755
70 | - require:
71 | - user: {{ config['user'] }}
72 |
73 | {% endif %}
74 |
75 | /var/log/nginx/{{ config['name'] }}:
76 | file.directory:
77 | - user: root
78 | - group: root
79 |
80 | /etc/nginx/conf.d/{{ config['name'] }}.conf:
81 | file.managed:
82 | - source: salt://pypi/config/pypi.nginx.conf.jinja
83 | - template: jinja
84 | - context:
85 | app_key: {{ key }}
86 | {% if config['docs_bucket'] %}
87 | serve_docs: False
88 | {% else %}
89 | serve_docs: True
90 | {% endif %}
91 | - user: root
92 | - group: root
93 | - mode: 640
94 |
95 | /etc/nginx/conf.d/{{ config['name'] }}:
96 | file.directory
97 |
98 |
99 | {% if config.get('rate_limit', False) %}
100 | /etc/nginx/conf.d/{{ config['name'] }}-ratelimit.conf:
101 | file.managed:
102 | - source: salt://pypi/config/pypi.nginx.ratelimit.conf.jinja
103 | - template: jinja
104 | - context:
105 | zone_name: {{ config['name'] }}
106 | zone_size: {{ config.get('rate_limit', {}).get('zone_size', '10m') }}
107 | max_rate: {{ config.get('rate_limit', {}).get('max_rate', '1r/s') }}
108 | {% endif %}
109 |
110 | /etc/nginx/conf.d/{{ config['name'] }}/app.conf:
111 | file.managed:
112 | - source: salt://pypi/config/pypi.nginx.app.conf.jinja
113 | - template: jinja
114 | - context:
115 | app_key: {{ key }}
116 | {% if config.get('rate_limit', False) %}
117 | rate_limit: True
118 | zone_name: {{ config['name'] }}
119 | burst: {{ config.get('rate_limit', {}).get('burst', 3) }}
120 | nodelay: {{ config.get('rate_limit', {}).get('nodelay', False) }}
121 | {% endif %}
122 | - user: root
123 | - group: root
124 | - mode: 640
125 | - require:
126 | - file: /etc/nginx/conf.d/{{ config['name'] }}
127 | - file: /etc/nginx/conf.d/{{ config['name'] }}.conf
128 | - file: /var/log/nginx/{{ config['name'] }}
129 |
130 | /etc/logrotate.d/{{ config['name'] }}:
131 | file.managed:
132 | - source: salt://pypi/config/pypi.logrotate.conf
133 | - template: jinja
134 | - context:
135 | app_key: {{ key }}
136 | - user: root
137 | - group: root
138 | - mode: 644
139 |
140 | {{ config['path'] }}/secret:
141 | file.directory:
142 | - user: {{ config['name'] }}
143 | - group: {{ config['group'] }}
144 | - mode: 700
145 |
146 | {{ config['path'] }}/secret/pubkey:
147 | file.managed:
148 | - user: {{ config['name'] }}
149 | - group: {{ config['group'] }}
150 | - mode: 600
151 | - contents_pillar: secrets-{{ key }}:pubkey
152 | - require:
153 | - file: {{ config['path'] }}/secret
154 |
155 | {{ config['path'] }}/secret/privkey:
156 | file.managed:
157 | - user: {{ config['name'] }}
158 | - group: {{ config['group'] }}
159 | - mode: 600
160 | - contents_pillar: secrets-{{ key }}:privkey
161 | - require:
162 | - file: {{ config['path'] }}/secret
163 |
164 | /etc/init.d/{{ config['name'] }}:
165 | file.managed:
166 | - source: salt://pypi/config/pypi.initd.jinja
167 | - template: jinja
168 | - context:
169 | app_key: {{ key }}
170 | - user: root
171 | - group: root
172 | - mode: 755
173 | - template: jinja
174 | - require:
175 | - file: {{ config['path'] }}/src/config.ini
176 |
177 | /etc/supervisord.d/{{ config['name'] }}-worker.ini:
178 | file.managed:
179 | - source: salt://pypi/config/pypi-worker.ini.jinja
180 | - user: root
181 | - group: root
182 | - mode: 640
183 | - template: jinja
184 | - context:
185 | app_key: {{ key }}
186 | - require:
187 | - file: /var/log/{{ config['name'] }}
188 | - file: {{ config['path'] }}/src/config.ini
189 | - virtualenv: {{ config['path'] }}/env
190 |
191 | {% if config['docs_bucket'] %}
192 | /etc/supervisord.d/{{ config['name'] }}-docs-proxy.ini:
193 | file.managed:
194 | - source: salt://pypi/config/pypi-docs-proxy.ini.jinja
195 | - user: root
196 | - group: root
197 | - mode: 640
198 | - template: jinja
199 | - context:
200 | app_key: {{ key }}
201 | {% else %}
202 | /etc/supervisord.d/{{ config['name'] }}-docs-proxy.ini:
203 | file.absent
204 | {% endif %}
205 |
206 | {{ config['name'] }}-supervisor:
207 | cmd.wait:
208 | - name: supervisorctl reread && supervisorctl update
209 | - require:
210 | - file: /etc/supervisord.d/{{ config['name'] }}-worker.ini
211 | - file: /etc/supervisord.d/{{ config['name'] }}-docs-proxy.ini
212 | - watch:
213 | - file: /etc/supervisord.d/{{ config['name'] }}-worker.ini
214 | - file: /etc/supervisord.d/{{ config['name'] }}-docs-proxy.ini
215 |
216 | {{ config['name'] }}-service:
217 | service:
218 | - name: {{ config['name'] }}
219 | - running
220 | - enable: True
221 | - require:
222 | - file: /etc/init.d/{{ config['name'] }}
223 |
224 | {{ config['name'] }}-reload:
225 | cmd.wait:
226 | - name: 'service {{ config['name'] }} reload && supervisorctl restart {{ config['name'] }}-worker'
227 | - require:
228 | - service: {{ config['name'] }}-service
229 | - cmd: {{ config['name'] }}-supervisor
230 | - watch:
231 | - git: {{ config['name'] }}-source
232 | - file: {{ config['path'] }}/src/config.ini
233 |
234 | {% endfor %}
235 |
--------------------------------------------------------------------------------
/provisioning/salt/roots/salt/python/27/init.sls:
--------------------------------------------------------------------------------
1 |
2 | include:
3 | - python.copr
4 |
5 | python27:
6 | pkg.installed:
7 | - require:
8 | - pkgrepo: ewdurbin-pythons-el6
9 |
10 | setuptools-2.7:
11 | cmd.wait:
12 | - name: 'curl https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py | python2.7'
13 | - watch:
14 | - pkg: python27
15 | - require:
16 | - pkg: python27
17 |
18 | pip-2.7:
19 | cmd.wait:
20 | - name: 'curl https://bootstrap.pypa.io/get-pip.py | python2.7'
21 | - watch:
22 | - pkg: python27
23 | - require:
24 | - pkg: python27
25 |
--------------------------------------------------------------------------------
/provisioning/salt/roots/salt/python/27/virtualenv.sls:
--------------------------------------------------------------------------------
1 |
2 | include:
3 | - python.27
4 |
5 | system-pip:
6 | pkg.installed:
7 | - name: python-pip
8 |
9 | virtualenv-2.7:
10 | pip.installed:
11 | - name: virtualenv
12 | - pip_bin: /usr/bin/pip2.7
13 | - require:
14 | - pkg: system-pip
15 | - pkg: python27
16 | - cmd: pip-2.7
17 |
--------------------------------------------------------------------------------
/provisioning/salt/roots/salt/python/34/init.sls:
--------------------------------------------------------------------------------
1 | include:
2 | - python.copr
3 |
4 | python34-devel:
5 | pkg.installed:
6 | - require:
7 | - pkgrepo: ewdurbin-pythons-el6
8 |
--------------------------------------------------------------------------------
/provisioning/salt/roots/salt/python/35/init.sls:
--------------------------------------------------------------------------------
1 | include:
2 | - python.copr
3 |
4 | python35-devel:
5 | pkg.installed:
6 | - require:
7 | - pkgrepo: ewdurbin-pythons-el6
8 |
--------------------------------------------------------------------------------
/provisioning/salt/roots/salt/python/copr/config/ewdurbin-pythons-el6.gpgkey:
--------------------------------------------------------------------------------
1 | -----BEGIN PGP PUBLIC KEY BLOCK-----
2 | Version: GnuPG v2
3 |
4 | mQENBFeUm6YBCADIPcpT6tP0TNVwdqSjVD6AoVhnmwGwluye1wyNgLgXsVqvbQny
5 | ZbhLUPlF+rbcKsua/KW8A3jKwGXbUaWqeaUZmKv3DYxRLSBouF4vmYDQ3D4RAhEY
6 | Yl7RjHuQRL/iCJKrXwQTwiaQdnh7+dgLOX08VU+3uAR9naET5IbWntqEmEdK0vEI
7 | R5e35gkWo1HBF6S4OoNFd5KHWzqXDmIkg+FU2EFQcTqoIxL4LEqLyaMJ5qhL3pKp
8 | vhg6psbgmE+UOLqCfFbOQO8bUHc2KHzN65bj+f3QSSik3G2/CZRUH/6+F+/bCVnJ
9 | CyYB2FpDGUHr+knMSJZ6G/u6teiOziX/eASNABEBAAG0SGV3ZHVyYmluX3B5dGhv
10 | bnMtZWw2IChOb25lKSA8ZXdkdXJiaW4jcHl0aG9ucy1lbDZAY29wci5mZWRvcmFo
11 | b3N0ZWQub3JnPokBPQQTAQgAJwUCV5SbpgIbLwUJCWYBgAULCQgHAgYVCAkKCwIE
12 | FgIDAQIeAQIXgAAKCRD3vr62A9myD/P9B/9z8l9dZHpFbJUB+CWOAsM4n2YKiN6w
13 | VWf7xZIjCfg0X1qdc5JOCYns6c3vatdogcWR/fN33VpvBcmAZc4M6m2dhnEguNkl
14 | y9eNO0BojKZ+T3gwvfk7Ej75Ny2B632b1xk1tAP7dunAQnP4IW+th2RDDyfZLw3q
15 | b7A2xwn8nvHDsnvV5fq6sVGvkZHVEjIvpM9aJTt5qsNTK/po3u28PDGLdE2WfACA
16 | +IjVhG8dKCVawi4LjlsUWSHK1P0xRHULxFnt3eu1z2nUVViSwJIGfwWAKjLWCpQf
17 | ILvgZ7LanqOJeE1vK4UuZlpaEeC19ugqpzn7wZ1bhd4sw9wC2Nle0fnY
18 | =vpqx
19 | -----END PGP PUBLIC KEY BLOCK-----
20 |
--------------------------------------------------------------------------------
/provisioning/salt/roots/salt/python/copr/init.sls:
--------------------------------------------------------------------------------
1 |
2 | ewdurbin-pythons-el6-repo-pkg-deps:
3 | pkg.installed:
4 | - pkgs:
5 | - pygpgme
6 | - yum-utils
7 |
8 | /etc/pki/rpm-gpg/RPM-GPG-KEY-ewdurbin-pythons-el6:
9 | file.managed:
10 | - source: salt://python/copr/config/ewdurbin-pythons-el6.gpgkey
11 | - user: root
12 | - group: root
13 | - mode: 444
14 |
15 | ewdurbin-pythons-el6:
16 | pkgrepo.managed:
17 | - humanname: Copr repo for pythons-el6 owned by ewdurbin
18 | - baseurl: https://copr-be.cloud.fedoraproject.org/results/ewdurbin/pythons-el6/epel-6-$basearch/
19 | - gpgcheck: 1
20 | - gpgkey: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ewdurbin-pythons-el6
21 | - skip_if_unavailable: 1
22 | - sslverify: 1
23 | - sslcacert: /etc/pki/tls/certs/ca-bundle.crt
24 | - require:
25 | - file: /etc/pki/rpm-gpg/RPM-GPG-KEY-ewdurbin-pythons-el6
26 | - pkg: ewdurbin-pythons-el6-repo-pkg-deps
27 |
--------------------------------------------------------------------------------
/provisioning/salt/roots/salt/redis/copr/config/jlaska-redis-28.gpgkey:
--------------------------------------------------------------------------------
1 | -----BEGIN PGP PUBLIC KEY BLOCK-----
2 | Version: GnuPG v2
3 |
4 | mQENBFTTfgoBCACsCAvryW1QpO6xyf+hdHtaeS8nVcAcfSgbtWjW0BJPbCQ7hFcz
5 | Rn2xaB8n8rjUS2jELMQbIp94YJ0NoM4ezXqokSvTjWc/wv35lnbRWd3eIa4ST4c7
6 | b/ihWrQX3RMbHYnCWMs8VSLG9FALXbijRVOUWBGszp8zcGmezCg5SpV8W6WVfE/X
7 | 3bl9ZuBF66bkxy0V1bbwXmUaWh9H+L7S8uPEDPk157P1cnEDZfSaJCkiBbUaD+eB
8 | p/cYOFch+z7bqiTwyU3jRUSYJwwMPUl1FxHuQz3MeMqiYLKiwvmbmNCt+HrGhCxi
9 | jdK/zxyIpnoJ0bCnFZRSWYtajbIr199Xi1HbABEBAAG0PmpsYXNrYV9yZWRpcy0y
10 | OCAoTm9uZSkgPGpsYXNrYSNyZWRpcy0yOEBjb3ByLmZlZG9yYWhvc3RlZC5vcmc+
11 | iQE/BBMBAgApBQJU034KAhsvBQkJZgGABwsJCAcDAgEGFQgCCQoLBBYCAwECHgEC
12 | F4AACgkQnf23mNRPe7KDZQgAo8SmwrobQ7fZuKMCO4XWiAOOmhhsJn+SLMAFnU7a
13 | OP3VQcTnMzx8bu99r2NSO0IOCKnUvN+WuDyDCAfocxZrWp1I8/vdrP6AQLwG5sq2
14 | lgfecAy1j2VLOjBog+rS/ZypjGts1NfC6Qtvhk55roy5ikd29MZmI/gQFt119Ou0
15 | qZCbN1yRLE3axvK/7dF8YSpUrRKQkE0d/ZcmahQ0JNsoIiPnMdjWeqGA8PZXnNB+
16 | kKwVAXP1R+cMFrQ8vzzhPqL1WdeiGGjd4nvNqh811R8NuapZ3OAt/W5VNGSW8kKw
17 | xJG/RNVbVGRYBbYipraE4z2E9k+eJCVHEDBhFoR9/UbIFw==
18 | =8XbF
19 | -----END PGP PUBLIC KEY BLOCK-----
20 |
--------------------------------------------------------------------------------
/provisioning/salt/roots/salt/redis/copr/init.sls:
--------------------------------------------------------------------------------
1 |
2 | jlaska-redis-28-repo-pkg-deps:
3 | pkg.installed:
4 | - pkgs:
5 | - pygpgme
6 | - yum-utils
7 |
8 | /etc/pki/rpm-gpg/RPM-GPG-KEY-jlaska-redis-28:
9 | file.managed:
10 | - source: salt://redis/copr/config/jlaska-redis-28.gpgkey
11 | - user: root
12 | - group: root
13 | - mode: 444
14 |
15 | jlaska-redis-28:
16 | pkgrepo.managed:
17 | - humanname: Copr repo for redis-28 owned by jlaska
18 | - baseurl: https://copr-be.cloud.fedoraproject.org/results/jlaska/redis-28/epel-6-$basearch/
19 | - gpgcheck: 1
20 | - gpgkey: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-jlaska-redis-28
21 | - skip_if_unavailable: True
22 | - sslverify: 1
23 | - sslcacert: /etc/pki/tls/certs/ca-bundle.crt
24 | - require:
25 | - file: /etc/pki/rpm-gpg/RPM-GPG-KEY-jlaska-redis-28
26 | - pkg: jlaska-redis-28-repo-pkg-deps
27 |
28 |
--------------------------------------------------------------------------------
/provisioning/salt/roots/salt/redis/init.sls:
--------------------------------------------------------------------------------
1 |
2 | include:
3 | - redis.copr
4 |
5 | redis28:
6 | pkg:
7 | - installed
8 |
9 | redis:
10 | service:
11 | - running
12 | - enable: True
13 | - require:
14 | - pkg: redis28
15 |
16 | {% if 'datadog_api_key' in pillar %}
17 | /etc/dd-agent/conf.d/redisdb.yaml:
18 | file.managed:
19 | - user: root
20 | - group: root
21 | - mode: '0644'
22 | - contents: |
23 | init_config:
24 | instances:
25 | - host: localhost
26 | port: 6379
27 | {% endif %}
28 |
--------------------------------------------------------------------------------
/provisioning/salt/roots/salt/sudoers/config/salt.jinja:
--------------------------------------------------------------------------------
1 | {% for sudoer_group in sudoers.split(',') %}
2 | {% for command in pillar['sudoer_groups'][sudoer_group]['commands'] %}
3 | %{{sudoer_group}} {{command}}
4 | {% endfor %}
5 | {% endfor %}
6 |
--------------------------------------------------------------------------------
/provisioning/salt/roots/salt/sudoers/init.sls:
--------------------------------------------------------------------------------
1 | {% if 'sudoer_groups' in pillar %}
2 | {% for group in pillar.get('sudoer_groups', {}) %}
3 | {{group}}-sudoer_group:
4 | group.present:
5 | - name: {{group}}
6 | {% endfor %}
7 | /etc/sudoers.d/salt:
8 | file.managed:
9 | - source: salt://sudoers/config/salt.jinja
10 | - template: jinja
11 | - context:
12 | sudoers: {{ pillar.get('sudoer_groups', {}).keys()|join(',') }}
13 | - user: root
14 | - group: root
15 | - mode: 640
16 | {% endif %}
17 |
--------------------------------------------------------------------------------
/provisioning/salt/roots/salt/supervisor/config/supervisord.conf:
--------------------------------------------------------------------------------
1 | [unix_http_server]
2 | file=/tmp/supervisor.sock ; (the path to the socket file)
3 |
4 | [supervisord]
5 | logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
6 | logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB)
7 | logfile_backups=10 ; (num of main logfile rotation backups;default 10)
8 | loglevel=info ; (log level;default info; others: debug,warn,trace)
9 | pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
10 | nodaemon=false ; (start in foreground if true;default false)
11 | minfds=1024 ; (min. avail startup file descriptors;default 1024)
12 | minprocs=200 ; (min. avail process descriptors;default 200)
13 |
14 | [rpcinterface:supervisor]
15 | supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
16 |
17 | [supervisorctl]
18 | serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket
19 |
20 | [include]
21 | files = supervisord.d/*.ini
22 |
--------------------------------------------------------------------------------
/provisioning/salt/roots/salt/supervisor/config/supervisord.init:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #
3 | # supervisord This scripts turns supervisord on
4 | #
5 | # Author: Mike McGrath