def deploy_global_config(config): from fabricghdeploykeys.fabric_commands.permissions import set_permissions_file repo_dir = get_repo_dir(config) global_dir = '{0}/config/ubuntu-16.04/global'.format(repo_dir) shared_mem = '/etc/sysctl.d/30-postgresql-shm.conf' nginx_conf = '/etc/nginx/nginx.conf' postgres_conf = '/etc/postgresql/9.5/main/postgresql.conf' uwsgi_socket = '/etc/systemd/system/[email protected]' uwsgi_service = '/etc/systemd/system/[email protected]' with cd(global_dir): sudo('git fetch origin') sudo('git reset --hard origin/master') sudo('cp 30-postgresql-shm.conf {0}'.format(shared_mem)) set_permissions_file(shared_mem, 'root', 'root', '644') sudo('cp nginx.conf {0}'.format(nginx_conf)) set_permissions_file(nginx_conf, 'root', 'root', '644') sudo('cp postgresql.conf {0}'.format(postgres_conf)) set_permissions_file(postgres_conf, 'postgres', 'postgres', '644') sudo('cp [email protected] {0}'.format(uwsgi_socket)) set_permissions_file(uwsgi_socket, 'root', 'root', '644') sudo('cp [email protected] {0}'.format(uwsgi_service)) set_permissions_file(uwsgi_service, 'root', 'root', '644') sudo('/etc/init.d/nginx restart') sudo('/etc/init.d/postgresql restart')
def setup_deployment(config): django_settings = import_module('newdjangosite.settings_{0}'.format(config)) db_settings = django_settings.DATABASES['default'] db_name = db_settings['NAME'] db_user = db_settings['USER'] db_password = db_settings['PASSWORD'] repo_dir = get_repo_dir(config) database_created = False with settings(abort_exception=AllowedException): try: run('createdb --encoding=UTF8 --locale=en_US.UTF-8 --owner=postgres --template=template0 {0}'.format(db_name)) database_created = True except AllowedException: pass with settings(abort_exception=AllowedException): try: run('createuser -d -R -S {0}'.format(db_user)) except AllowedException: pass run('psql -d postgres -c \"ALTER ROLE {0} WITH ENCRYPTED PASSWORD \'{1}\';\"'.format(db_user, db_password)) _setup_repo(repo_dir) with cd(repo_dir): if not exists('venv'): run('python3 -m venv --system-site-packages venv') global_dir = '{0}/config/ubuntu-16.04/global'.format(repo_dir) with cd(global_dir): uwsgi_socket = '/etc/systemd/system/[email protected]' uwsgi_service = '/etc/systemd/system/[email protected]' if not exists(uwsgi_socket): from fabricghdeploykeys.fabric_commands.permissions import set_permissions_file sudo('cp [email protected] {0}'.format(uwsgi_socket)) set_permissions_file(uwsgi_socket, 'root', 'root', '644') if not exists(uwsgi_service): sudo('cp [email protected] {0}'.format(uwsgi_service)) set_permissions_file(uwsgi_service, 'root', 'root', '644') deploy(config) if database_created: with cd(repo_dir): run('venv/bin/python web/manage_{0}.py createsuperuser'.format(config))