Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from fabric.context_managers import prefix
- from fabric.contrib.console import confirm
- from fabric.operations import prompt, sudo
- from fabric.api import run, task
- from fabric.state import env
- import os
- env.user = 'root'
- @task
- def create_user(username, python='/usr/local/bin/python3.5'):
- run('useradd -m -s /bin/bash {}'.format(username))
- run_user = lambda x: sudo(x, user=username)
- run_user('mkdir ~/logs')
- run_user('mkdir ~/www')
- if confirm('Create virtualenv?'):
- run_user('{} -m venv --copies ~/venv'.format(python))
- with prefix('source ~/venv/bin/activate'):
- run_user('pip install --upgrade pip setuptools wheel')
- if confirm('Add ssh key?'):
- run_user('mkdir ~/.ssh')
- run_user('chmod 700 ~/.ssh')
- with open(os.path.expanduser('~/.ssh/id_rsa.pub'), 'r') as fp:
- ssh_key = fp.read().strip()
- run_user('echo "{}" >> ~/.ssh/authorized_keys'.format(ssh_key))
- run_user('chmod 600 ~/.ssh/authorized_keys')
- if confirm('Install project now?', default=False):
- configs = prompt('Configs to install: ').split('')
- for conf in configs:
- script_path = '/home/{user}/www/{conf}/system/install.sh'\
- .format(user=username, conf=conf)
- run('chmod +x {}'.format(script_path))
- run('{} {}'.format(script_path, conf))
- @task
- def create_database():
- sql = lambda x: sudo('cd ~ && psql -c "{}"'.format(x), user='postgres')
- username = prompt('Username: ')
- password = prompt('Password: ')
- sql("CREATE USER {} WITH PASSWORD '{}'".format(username, password))
- dbnames = prompt('DB names: ').split(',')
- for dbname in dbnames:
- sql("CREATE DATABASE {};".format(dbname))
- sql("GRANT ALL PRIVILEGES ON DATABASE {} TO {}".format(dbname, username))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement