Commit 2470bf960ee10d2d6bdee3f1fa0c7333db000ca1
1 parent
188e1d3d
Exists in
master
and in
39 other branches
Adding multi-distribuition support
Showing
1 changed file
with
28 additions
and
8 deletions
Show diff stats
fabfile.py
... | ... | @@ -9,6 +9,16 @@ from fabric.api import env, run, sudo, local |
9 | 9 | from fabric.contrib.files import exists |
10 | 10 | from fabric.context_managers import prefix, cd, settings, shell_env |
11 | 11 | |
12 | +LINUX_DISTRO = 'Debian' | |
13 | +DISTRO_CMD = {'Debian': { | |
14 | + 'install': 'apt-get install', | |
15 | + 'update': 'apt-get update', | |
16 | + }, | |
17 | + 'CentOS': { | |
18 | + 'install': 'yum install', | |
19 | + 'install': 'yum update -y', | |
20 | + } | |
21 | + } | |
12 | 22 | |
13 | 23 | APP_USER = APP_NAME = VENV_NAME = 'colab' |
14 | 24 | REPO_URL = 'git@github.com:colab-community/colab.git' |
... | ... | @@ -35,6 +45,15 @@ MANAGE_PATH = os.path.join(REPO_PATH, 'src') |
35 | 45 | SETTINGS_PATH = os.path.join(MANAGE_PATH, APP_NAME) |
36 | 46 | |
37 | 47 | |
48 | +def get_distro(): | |
49 | + global LINUX_DISTRO | |
50 | + linux_name = run('python -c "import platform; print platform.dist()[0]"') | |
51 | + | |
52 | + if 'Ubuntu' in linux_name or 'Debian' in linux_name: | |
53 | + LINUX_DISTRO = 'Debian' | |
54 | + elif 'centos' in linux_name: | |
55 | + LINUX_DISTRO = 'CentOS' | |
56 | + | |
38 | 57 | @task |
39 | 58 | def environment(name=DEFAULT_ENVIRONMENT): |
40 | 59 | """Set the environment where the tasks will be executed""" |
... | ... | @@ -53,12 +72,9 @@ def environment(name=DEFAULT_ENVIRONMENT): |
53 | 72 | |
54 | 73 | env.update(environments[name]) |
55 | 74 | env.environment = name |
56 | -environment() | |
57 | - | |
58 | - | |
59 | -def aptget_install(pkg): | |
60 | - sudo('DEBIAN_FRONTEND=noninteractive apt-get install -y -q {}'.format(pkg)) | |
61 | 75 | |
76 | +def package_install(pkg): | |
77 | + sudo(DISTRO_CMD[LINUX_DISTRO]['install'] + ' ' + pkg + ' -y -q') | |
62 | 78 | |
63 | 79 | def install_requirements(): |
64 | 80 | with cd(REPO_PATH), prefix(WORKON_ENV): |
... | ... | @@ -130,11 +146,12 @@ def update_code(): |
130 | 146 | @task |
131 | 147 | def bootstrap(): |
132 | 148 | """Bootstrap machine to run fabric tasks""" |
133 | - | |
134 | 149 | with settings(user=env.superuser): |
135 | 150 | |
136 | - if not exists('/usr/bin/git'): | |
137 | - aptget_install('git') | |
151 | + sudo(DISTRO_CMD[LINUX_DISTRO]['update']) | |
152 | + | |
153 | + if not exists('/usr/bin/git'): | |
154 | + package_install('git-core') | |
138 | 155 | |
139 | 156 | if env.is_vagrant: |
140 | 157 | groups = 'sudo,vagrant' |
... | ... | @@ -222,3 +239,6 @@ def deploy(noprovision=False): |
222 | 239 | migrate() |
223 | 240 | |
224 | 241 | sudo('supervisorctl start all') |
242 | + | |
243 | +# Main | |
244 | +environment() | ... | ... |