#!/usr/bin/env python # -*- coding: utf-8 -*- common_configure = [ # First command as regular user {"action": "run", "params": "whoami"}, # List of APT packages to installsudo apt-get install {"action": "apt", "params": ["git", "python-setuptools", "python-dev", "build-essential", "python-pip", "libmysqlclient-dev", "mysql-server", "mysql-client", "libjpeg-dev"], "message":"Installing apt-get packages" }, # {"action": "sudo", "params": "mysql_secure_installation", # "message": "MYSQL Configuration" }, # {"action": "sudo", "params": "service mysqld start", # "message": "MYSQL Starting" }, # {"action": "sudo", "params": "chkconfig mysqld on", # "message": "MYSQL Configuration auto start" }, {"action": "run", "params": "mysqladmin -u %(MYSQL_USER)s -h localhost password '%(MYSQL_PASSWORD)s'", "message": "MYSQL Create user" }, # {"action": "run", "params": "mysqladmin -u %(MYSQL_USER)s --password='%(MYSQL_PASSWORD)s' -h localhost '%(MYSQL_PASSWORD)s'", # "message": "MYSQL Configuration" }, host # List of pypi packages to install {"action": "pip", "params": ["virtualenv"], "message":"Installing virtualenv"}, #project directory {"action": "run", "params": "mkdir -p ~/.ssh", "message": "Create ssh folder" }, {"action": "run", "params": "mkdir -p %(PROJECT_DIR)s", "message": "Create project folder" }, {"action": "run", "params": "mkdir -p %(LOGS_DIR)s", "message": "Create logs folder" }, {"action": "run", "params": "chown -R %(SERVER_USERNAME)s: %(PROJECT_DIR)s"}, # git setup {"action": "run", "params": "git config --global user.name '%(GIT_USERNAME)s'", "message": "Configuring git"}, {"action": "run", "params": "git config --global user.email '%(ADMIN_EMAIL)s'"}, {"action": "put", "params": {"file": "%(GIT_KEY_PATH)s", "destination": "/home/%(SERVER_USERNAME)s/.ssh/%(GIT_KEY_NAME)s"}}, {"action": "run", "params": "chmod 600 /home/%(SERVER_USERNAME)s/.ssh/%(GIT_KEY_NAME)s"}, {"action": "run", "params": u"""echo 'IdentityFile /home/%(SERVER_USERNAME)s/.ssh/%(GIT_KEY_NAME)s' >> /home/%(SERVER_USERNAME)s/.ssh/config"""}, {"action": "run", "params": "ssh-keyscan github.com >> /home/%(SERVER_USERNAME)s/.ssh/known_hosts"}, # Clone the git repo {"action": "run", "params": "git clone %(REPOSITORY)s %(PROJECT_DIR)s"}, # virtualenv {"action": "run", "params": "mkdir -p %(ENV_DIR)s", "message": "Create project folder" }, {"action": "run", "params": "virtualenv %(ENV_DIR)s", "message": "Configuring virtualenv" }, {"action": "run", "params": "chown -R %(SERVER_USERNAME)s: %(ENV_DIR)s"}, # {"action": "run", "params": # "echo 'expo WORKON_HOME=%(PRO_DIR)s' >> /home/%(SERVER_USERNAME)s/.profile"}, {"action": "run", "params": u"echo 'source %(ENV_DIR)s/bin/activate' >> /home/%(SERVER_USERNAME)s/.profile"}, {"action": "run", "params": "source /home/%(SERVER_USERNAME)s/.profile"}, {"action": "virtualenv", "params": "pip install -r %(PROJECT_DIR)s/requirements.txt --upgrade"}, ] web_configure = [ # List of APT packages to install {"action": "apt", "params": ["nginx", "uwsgi", "uwsgi-plugin-python", "nodejs", "npm", "less", "node-less", "yui-compressor"], "message":"Installing nginx, uwsgi, nodejs packages"}, {"action": "sudo", "params": "npm install -g bower"}, # # Костыль с нодой # {"action": "run", "params": "ln -s /usr/bin/nodejs %(ENV_DIR)s/bin/node"}, # {"action": "sudo", "params": "cd %(PROJECT_DIR)s/frontend/transcribe.ninja && npm install"}, # {"action": "sudo", "params": "cd %(PROJECT_DIR)s/frontend/stenograph.us && npm install"}, {"action": "sudo", "params": "rm -rf /etc/nginx/sites-enabled/default"}, # {"action": "sudo", "params": "rm -rf /etc/supervisor/conf.d/default"}, {"action": "sudo", "params": "rm -rf /etc/uwsgi/apps-enabled/default.ini"}, ] # nginx reload_nginx = [ {"action": "put_template", "params": {"template": "%(BASE_DIR)s/app/conf/nginx.conf.template", "destination": "/home/%(SERVER_USERNAME)s/%(PROJECT_NAME)s/app/conf/nginx.conf"}}, {"action": "sudo", "params": "service nginx restart", "message": "Restarting nginx"}, ] create_nginx_links = [ {"action": "sudo", "params": "ln -s /home/%(SERVER_USERNAME)s/%(PROJECT_NAME)s/app/conf/nginx.conf /etc/nginx/sites-enabled/%(PROJECT_NAME)s.conf"}, ] create_uwsgi_links = [ {"action": "sudo", "params": "ln -s /home/%(SERVER_USERNAME)s/%(PROJECT_NAME)s/app/conf/uwsgi_zuykov.conf /etc/uwsgi/apps-enabled/%(PROJECT_NAME)s_zuykov.ini"}, ] reload_uwsgi = [ {"action": "put_template", "params": {"template": "%(BASE_DIR)s/app/conf/uwsgi_zuykov.conf.template", "destination": "/home/%(SERVER_USERNAME)s/%(PROJECT_NAME)s/app/conf/uwsgi_zuykov.conf"}}, {"action": "sudo", "params": "service uwsgi restart", "message": "Restarting uwsgi"}, ] web_configure += reload_uwsgi + reload_nginx + create_uwsgi_links + create_nginx_links