Add Django tasks, update setting_local and apache site template render, fix os vs. env error
This commit is contained in:
@@ -1,12 +1,9 @@
|
||||
import sys
|
||||
import os
|
||||
from fabric.api import task
|
||||
|
||||
from fabric.api import run, sudo, cd, env, task
|
||||
from fabric.main import load_settings
|
||||
|
||||
import databases
|
||||
import webservers
|
||||
import platforms
|
||||
import databases as database
|
||||
import webservers as webserver
|
||||
import platforms as platform
|
||||
import django
|
||||
from conf import setup_environment
|
||||
|
||||
setup_environment()
|
||||
@@ -14,22 +11,24 @@ setup_environment()
|
||||
|
||||
@task(default=True)
|
||||
def install():
|
||||
platforms.install_dependencies()
|
||||
platforms.install_mayan()
|
||||
platform.install_dependencies()
|
||||
platform.install_mayan()
|
||||
platform.install_database_manager()
|
||||
databases.create_database()
|
||||
platforms.fix_permissions()
|
||||
platforms.install_webserver()
|
||||
webservers.install_site()
|
||||
webservers.restart()
|
||||
database.create_database()
|
||||
django.database_config()
|
||||
django.syncdb()
|
||||
platform.fix_permissions()
|
||||
platform.install_webserver()
|
||||
webserver.install_site()
|
||||
webserver.restart()
|
||||
|
||||
|
||||
@task
|
||||
def uninstall():
|
||||
platforms.uninstall()
|
||||
webservers.remove_site()
|
||||
platform.uninstall()
|
||||
webserver.remove_site()
|
||||
|
||||
if env.drop_database:
|
||||
databases.drop()
|
||||
database.drop()
|
||||
|
||||
|
||||
|
||||
@@ -5,7 +5,12 @@ from fabric.api import env
|
||||
from literals import (DEFAULT_INSTALL_PATH, DEFAULT_VIRTUALENV_NAME,
|
||||
DEFAULT_REPOSITORY_NAME, DEFAULT_OS, OS_CHOICES,
|
||||
DEFAULT_DATABASE_MANAGER, DB_CHOICES, DEFAULT_DATABASE_NAME,
|
||||
DEFAULT_WEBSERVER, WEB_CHOICES)
|
||||
DEFAULT_WEBSERVER, WEB_CHOICES, DEFAULT_DATABASE_USERNAME,
|
||||
DJANGO_DB_DRIVERS, DEFAULT_DATABASE_HOST)
|
||||
|
||||
|
||||
def password_generator():
|
||||
return 'password'
|
||||
|
||||
|
||||
def setup_environment():
|
||||
@@ -20,6 +25,9 @@ def setup_environment():
|
||||
|
||||
env['database_manager'] = getattr(env, 'database_manager', DEFAULT_DATABASE_MANAGER)
|
||||
env['database_manager_name'] = DB_CHOICES[env.database_manager]
|
||||
env['database_username'] = getattr(env, 'database_username', DEFAULT_DATABASE_USERNAME)
|
||||
env['database_password'] = getattr(env, 'database_password', password_generator())
|
||||
env['database_host'] = getattr(env, 'database_host', DEFAULT_DATABASE_HOST)
|
||||
|
||||
if not getattr(env, 'database_manager_admin_password', None):
|
||||
print('Must set the database_manager_admin_password entry in the fabric settings file (~/.fabricrc by default)')
|
||||
@@ -29,3 +37,5 @@ def setup_environment():
|
||||
|
||||
env['webserver'] = getattr(env, 'webserver', DEFAULT_WEBSERVER)
|
||||
env['webserver_name'] = WEB_CHOICES[env.webserver]
|
||||
|
||||
env['django_database_driver'] = DJANGO_DB_DRIVERS[env.database_manager]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from fabric.api import run, sudo, cd, env, task
|
||||
from fabric.api import env, task
|
||||
|
||||
from ..literals import DB_MYSQL
|
||||
import mysql
|
||||
|
||||
@@ -5,9 +5,9 @@ def create_database():
|
||||
"""
|
||||
Create the MySQL Mayan EDMS database
|
||||
"""
|
||||
run('echo "create database %(database_name)s;" | mysql -u root --password=%(database_manager_admin_password)s' % env)
|
||||
#TODO: create DB and mayan user
|
||||
#TODO: custom settings_local
|
||||
run('echo "CREATE DATABASE %(database_name)s;" | mysql -u root --password=%(database_manager_admin_password)s' % env)
|
||||
run('echo "CREATE USER \'%(database_username)s\'@\'localhost\' IDENTIFIED BY \'%(database_password)s\';" | mysql -u root --password=%(database_manager_admin_password)s' % env)
|
||||
run('echo "GRANT ALL PRIVILEGES ON %(database_name)s.* TO \'%(database_username)s\'@\'localhost\' WITH GRANT OPTION; | mysql -u root --password=%(database_manager_admin_password)s' % env)
|
||||
|
||||
|
||||
def drop_database():
|
||||
|
||||
14
fabfile/django/__init__.py
Normal file
14
fabfile/django/__init__.py
Normal file
@@ -0,0 +1,14 @@
|
||||
import os
|
||||
|
||||
from fabric.api import env, task, cd, sudo
|
||||
from fabric.contrib.files import upload_template
|
||||
|
||||
|
||||
@task
|
||||
def syncdb():
|
||||
with cd(env.virtualenv_path):
|
||||
sudo('source bin/activate; %(repository_name)s/manage.py syncdb --noinput; %(repository_name)s/manage.py migrate' % (env))
|
||||
|
||||
@task
|
||||
def database_config():
|
||||
upload_template(filename=os.path.join('fabfile', 'templates', 'settings_local.py'), destination=env.repository_path, context=env, use_sudo=True)
|
||||
@@ -29,11 +29,20 @@ DEFAULT_REPOSITORY_NAME = {
|
||||
DB_MYSQL = 'mysql'
|
||||
DB_PGSQL = 'pgsql'
|
||||
DB_SQLITE = 'sqlite'
|
||||
DB_ORACLE = 'oracle'
|
||||
|
||||
DB_CHOICES = {
|
||||
DB_MYSQL: 'MySQL',
|
||||
DB_PGSQL: 'PostgreSQL',
|
||||
DB_SQLITE: 'SQLite'
|
||||
DB_SQLITE: 'SQLite',
|
||||
DB_ORACLE: 'ORACLE'
|
||||
}
|
||||
|
||||
DJANGO_DB_DRIVERS = {
|
||||
DB_MYSQL: 'mysql',
|
||||
DB_PGSQL: 'postgresql_psycopg2',
|
||||
DB_SQLITE: 'sqlite3',
|
||||
DB_ORACLE: 'oracle',
|
||||
}
|
||||
|
||||
WEB_APACHE = 'apache'
|
||||
@@ -48,3 +57,5 @@ DEFAULT_OS = OS_UBUNTU
|
||||
DEFAULT_DATABASE_MANAGER = DB_MYSQL
|
||||
DEFAULT_DATABASE_NAME = 'mayan'
|
||||
DEFAULT_WEBSERVER = WEB_APACHE
|
||||
DEFAULT_DATABASE_USERNAME = 'mayan'
|
||||
DEFAULT_DATABASE_HOST = '127.0.0.1'
|
||||
|
||||
@@ -37,11 +37,6 @@ def install_mayan():
|
||||
sudo('source bin/activate; pip install -r %s/requirements/production.txt' % env.repository_name)
|
||||
|
||||
|
||||
def syncdb():
|
||||
with cd(env.virtualenv_path):
|
||||
sudo('source bin/activate; %(repository_name)s/manage.py syncdb --noinput; %(repository_name)s/manage.py migrate' % (env))
|
||||
|
||||
|
||||
def install_database_manager():
|
||||
"""
|
||||
Install the database manager on an Ubuntu system
|
||||
|
||||
@@ -10,9 +10,9 @@ def install_site():
|
||||
Install Mayan EDMS site in the webserver configuration files
|
||||
"""
|
||||
|
||||
print('Adding Mayan EDMS\'s site files to: %s' % os.webserver_name)
|
||||
print('Adding Mayan EDMS\'s site files to: %s' % env.webserver_name)
|
||||
|
||||
if os.webserver == WEB_APACHE:
|
||||
if env.webserver == WEB_APACHE:
|
||||
apache.install_site()
|
||||
|
||||
|
||||
@@ -21,9 +21,9 @@ def remove_site():
|
||||
"""
|
||||
Install Mayan EDMS's site file from the webserver's configuration
|
||||
"""
|
||||
print('Removing Mayan EDMS\s site file from %s configuration' % os.webserver_name)
|
||||
print('Removing Mayan EDMS\s site file from %s configuration' % env.webserver_name)
|
||||
|
||||
if os.webserver == WEB_APACHE:
|
||||
if env.webserver == WEB_APACHE:
|
||||
apache.remove_site()
|
||||
|
||||
|
||||
@@ -32,9 +32,9 @@ def restart():
|
||||
"""
|
||||
Restart the webserver
|
||||
"""
|
||||
print('Restarting the web server: %s' % os.webserver_name)
|
||||
print('Restarting the web server: %s' % env.webserver_name)
|
||||
|
||||
if os.webserver == WEB_APACHE:
|
||||
if env.webserver == WEB_APACHE:
|
||||
apache.restart()
|
||||
|
||||
|
||||
@@ -45,5 +45,5 @@ def reload():
|
||||
"""
|
||||
print('Reloading the web server configuration files')
|
||||
|
||||
if os.webserver == WEB_APACHE:
|
||||
if env.webserver == WEB_APACHE:
|
||||
apache.reload()
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
import os
|
||||
|
||||
from fabric.api import run, sudo, cd, env, task
|
||||
from fabric.contrib.files import upload_template
|
||||
|
||||
|
||||
def install_site():
|
||||
"""
|
||||
Install Mayan EDMS's site file in Apache configuration
|
||||
"""
|
||||
|
||||
#TODO: mod site with paths
|
||||
sudo('cp %s /etc/apache2/sites-available/' % os.path.join(env.repository_path, 'contrib/apache/mayan'))
|
||||
# TODO: configurable site name
|
||||
upload_template(filename=os.path.join('fabfile', 'templates', 'apache_site'), destination='/etc/apache2/sites-available/mayan', context=env, use_sudo=True)
|
||||
sudo('a2ensite mayan')
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user