aboutsummaryrefslogtreecommitdiffstats
path: root/tipboard/extras/fabfile.py
diff options
context:
space:
mode:
Diffstat (limited to 'tipboard/extras/fabfile.py')
-rw-r--r--tipboard/extras/fabfile.py52
1 files changed, 52 insertions, 0 deletions
diff --git a/tipboard/extras/fabfile.py b/tipboard/extras/fabfile.py
new file mode 100644
index 0000000..079d1c4
--- /dev/null
+++ b/tipboard/extras/fabfile.py
@@ -0,0 +1,52 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+from fabric.api import run
+
+from fabtools import require
+from fabtools.python import virtualenv
+
+
+_TIPBOARD_USER = 'tipboard'
+_SOURCE_CODE_URL = 'https://github.com/allegro/tipboard.git'
+
+
+def install():
+ configure_os()
+
+ install_tipboard()
+
+ run('chown -R %(user)s:%(user)s /home/%(user)s' % {'user': _TIPBOARD_USER})
+
+
+def configure_os():
+ require.deb.packages([
+ 'python',
+ 'python-dev',
+ 'python-virtualenv',
+ 'redis-server',
+ 'libmysqlclient-dev',
+ 'supervisor',
+ 'git',
+ ])
+
+ require.user(_TIPBOARD_USER, home='/home/' + _TIPBOARD_USER,
+ shell='/bin/bash')
+
+
+def install_tipboard():
+ venv_path = '/home/%s/tipboard-current' % _TIPBOARD_USER
+
+ require.python.virtualenv(venv_path)
+
+ with virtualenv(venv_path):
+ require.python.package('distribute==0.6.28')
+ require.python.package('tipboard',
+ url=_SOURCE_CODE_URL + '@master#egg=tipboard')
+
+ require.supervisor.process('tipboard',
+ command='%s/bin/tipboard runserver' % venv_path,
+ directory='/home/%s' % _TIPBOARD_USER,
+ user=_TIPBOARD_USER,
+ stdout_logfile='/home/%s/out.log' %
+ _TIPBOARD_USER)