forked from jessemyers/cheddar
-
Notifications
You must be signed in to change notification settings - Fork 0
/
fabfile.py
130 lines (99 loc) · 2.79 KB
/
fabfile.py
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
from os.path import dirname
from fabric.api import env, put, sudo, task
env.use_ssh_config = True
PACKAGES = [
"nginx",
"python2.7",
"python-setuptools",
"python-dev",
"build-essential",
"supervisor",
"redis-server",
]
DIRECTORIES = [
("/etc/cheddar", None),
("/usr/lib/cheddar", None),
("/usr/share/cheddar", "nobody"),
("/var/log/cheddar", "nobody"),
("/var/run/cheddar", "nobody"),
]
FILES = [
"/etc/cheddar/cheddar.conf",
"/etc/nginx/sites-available/cheddar",
"/etc/cheddar/uwsgi.ini",
"/etc/logrotate.d/cheddar",
"/etc/supervisor/conf.d/cheddar.conf",
]
@task
def install_packages():
for package in PACKAGES:
sudo("apt-get install {} -y -q".format(package))
@task
def uninstall_packages():
for package in PACKAGES:
sudo("apt-get remove --purge -y -q {}".format(package))
sudo("apt-get autoremove -y -q")
@task
def create_directories():
for directory, owner in DIRECTORIES:
sudo("mkdir -p {}".format(directory))
if owner is not None:
sudo("chown {} {}".format(owner, directory))
@task
def remove_directories():
for directory, owner in DIRECTORIES:
sudo("rm -rf {}".format(directory))
@task
def create_files():
for file_ in FILES:
put("{}/conf{}".format(dirname(__file__), file_), file_, use_sudo=True)
@task
def remove_files():
for file_ in FILES:
sudo("rm -f {}".format(file_))
@task
def create_virtualenv():
sudo("easy_install pip")
sudo("pip install virtualenv")
sudo("virtualenv /usr/lib/cheddar/venv")
sudo("/usr/lib/cheddar/venv/bin/pip install -q cheddar") # noqa
sudo("/usr/lib/cheddar/venv/bin/pip install -q 'uwsgi>=1.9.18.2'")
@task
def remove_virtualenv():
sudo("rm -rf /usr/lib/cheddar/venv")
@task
def enable():
sudo("supervisorctl reload")
sudo("rm -f /etc/nginx/sites-enabled/default")
sudo("ln -sf ../sites-available/cheddar /etc/nginx/sites-enabled/")
if sudo("service nginx status", warn_only=True):
sudo("service nginx start")
else:
sudo("service nginx reload")
@task
def disable():
sudo("rm -f /etc/nginx/sites-enabled/cheddar")
sudo("ln -sf ../sites-available/default /etc/nginx/sites-enabled/")
if sudo("service nginx status", warn_only=True):
sudo("service nginx start")
else:
sudo("service nginx reload")
sudo("supervisorctl stop cheddar")
@task
def uninstall():
disable()
remove_virtualenv()
remove_files()
remove_directories()
uninstall_packages()
@task
def install():
install_packages()
create_directories()
create_files()
create_virtualenv()
enable()
@task
def upgrade():
sudo("/usr/lib/cheddar/venv/bin/pip install --upgrade cheddar") # noqa
sudo("supervisorctl restart cheddar")