예제 #1
0
def symlink():
    """
    Updates symlink stuff to the current deployed version
    """

    # TODO : really usefull ? (eg : for php apps ...)
    fabric.api.sudo(
        "ln -nfs %(shared_path)s/log %(current_release)s/log" % {
            'shared_path': env.remote_shared_path,
            'current_release': env.remote_current_release
        })

    if env.has_key('cfg_shared_files'):
        for cfg_shared_file in env.cfg_shared_files:
            fabric.api.sudo(
                "ln -nfs %(shared_path)s/config/%(file_name)s %(current_release)s/%(file)s"
                % {
                    'shared_path': env.remote_shared_path,
                    'current_release': env.remote_current_release,
                    'file': cfg_shared_file,
                    'file_name': os.path.basename(cfg_shared_file)
                })

    if env.has_key('extra_symlink_dirs'):
        for extra_symlink_dir in env.extra_symlink_dirs:
            fabric.api.sudo(
                "ln -nfs %(shared_path)s/%(dir_name)s %(current_release)s/%(dir_name)s"
                % {
                    'shared_path': env.remote_shared_path,
                    'current_release': env.remote_current_release,
                    'dir_name': extra_symlink_dir
                })
예제 #2
0
def symlink():
    """
    Updates symlink stuff to the current deployed version
    """

    # TODO : really usefull ? (eg : for php apps ...)
    fabric.api.sudo(
        "ln -nfs %(shared_path)s/log %(current_release)s/log"
        % {"shared_path": env.remote_shared_path, "current_release": env.remote_current_release}
    )

    if env.has_key("cfg_shared_files"):
        for cfg_shared_file in env.cfg_shared_files:
            fabric.api.sudo(
                "ln -nfs %(shared_path)s/config/%(file_name)s %(current_release)s/%(file)s"
                % {
                    "shared_path": env.remote_shared_path,
                    "current_release": env.remote_current_release,
                    "file": cfg_shared_file,
                    "file_name": os.path.basename(cfg_shared_file),
                }
            )

    if env.has_key("extra_symlink_dirs"):
        for extra_symlink_dir in env.extra_symlink_dirs:
            fabric.api.sudo(
                "ln -nfs %(shared_path)s/%(dir_name)s %(current_release)s/%(dir_name)s"
                % {
                    "shared_path": env.remote_shared_path,
                    "current_release": env.remote_current_release,
                    "dir_name": extra_symlink_dir,
                }
            )
예제 #3
0
def set_environment(e):
    # Copy the environment name into each environments, even though only one is being used
    for name in environments:
        environments[name]['name'] = name
    # Apply the environment
    env.update(e)
    # Ensure that the sites dict exists
    if not env.get('sites'):
        env['sites'] = {}
    # Apply any default settings
    if environments.has_key('defaults'):
        for setting in environments['defaults']:
            if not env.has_key(setting):
                env[setting] = environments['defaults'][setting]
    # Apply default site settings to each site
    if env.has_key('sites') and env['sites'].has_key('defaults'):
        for site in env['sites'].values():
            for setting in env['sites']['defaults']:
                if not site.has_key(setting):
                    site[setting] = env['sites']['defaults'][setting]
        del env['sites']['defaults']
    # Copy the site name into each of the sites and set the default type
    for name in env['sites']:
        env['sites'][name]['name'] = name
        if not env['sites'][name].has_key('type'):
            env['sites'][name]['type'] = SiteType.DJANGO
예제 #4
0
def set_environment(e):
    # Copy the environment name into each environments, even though only one is being used
    for name in environments:
        environments[name]['name'] = name
    # Apply the environment
    env.update(e)
    # Ensure that the sites dict exists
    if not env.get('sites'):
        env['sites'] = {}
    # Apply any default settings
    if environments.has_key('defaults'):
        for setting in environments['defaults']:
            if not env.has_key(setting):
                env[setting] = environments['defaults'][setting]
    # Apply default site settings to each site
    if env.has_key('sites') and env['sites'].has_key('defaults'):
        for site in env['sites'].values():
            for setting in env['sites']['defaults']:
                if not site.has_key(setting):
                    site[setting] = env['sites']['defaults'][setting]
        del env['sites']['defaults']
    # Copy the site name into each of the sites and set the default type
    for name in env['sites']:
        env['sites'][name]['name'] = name
        if not env['sites'][name].has_key('type'):
            env['sites'][name]['type'] = SiteType.DJANGO
예제 #5
0
def _get_svn_user_and_pass():
    if not env.has_key('svnuser') or len(env.svnuser) == 0:
        # prompt user for username
        prompt('Enter SVN username:'******'svnuser')
    if not env.has_key('svnpass') or len(env.svnpass) == 0:
        # prompt user for password
        env.svnpass = getpass.getpass('Enter SVN password:')
예제 #6
0
def _setup_local_environment():
    """Setup a localhost environment based on system variables.
    """
    env.logger.info("Get local environment")
    if not env.has_key("user"):
        env.user = os.environ["USER"]
    if not env.has_key("java_home"):
        env.java_home = os.environ.get("JAVA_HOME", "/usr/lib/jvm/java-6-openjdk")
예제 #7
0
def _setup_local_environment():
    """Setup a localhost environment based on system variables.
    """
    env.logger.info("Get local environment")
    if not env.has_key("user"):
        env.user = os.environ["USER"]
    if not env.has_key("java_home"):
        env.java_home = os.environ.get("JAVA_HOME", "/usr/lib/jvm/java-6-openjdk")
예제 #8
0
파일: fabfile.py 프로젝트: jivoi/fabric
def rollback_code():
        """Rolls back to the previously deployed version"""
        if not env.has_key('releases'):
                releases()
        if env.has_key('previous_release'):
                sudo("ln -nfs %(previous_release)s %(current_path)s && rm -rf %(current_release)s" % { 'current_release':env.current_release, 'previous_release':env.previous_release, 'current_path':env.current_path })
        else:
                print "no releases older then current"
                sys.exit(1)
예제 #9
0
def common_deploy():
    if not env.has_key('releases_path') or not env.has_key('packages'):
        abort("Call *_env before this task.")

    from time import time
    env.current_release = "%(releases_path)s/%(time).0f" % {
        'releases_path': env.releases_path,
        'time': time()
    }

    run("mkdir -p %(target_dir)s" % {'target_dir': env.current_release})
    for p in env.packages:
        put(p, env.current_release)
예제 #10
0
def remote(command, shell=True, pty=True, combine_stderr=True):
    '''Runs a remote command using either `run()` or `sudo()`.  If
    `env.use_sudo` is exists and is true, `sudo()` is used.  Otherwise,
    `run()` is used.  Using sudo, if `env.sudo_user` is set, the value of
    that expression will be passed to `sudo()` as the `user` parameter.
    Otherwise, the command will be executed without a `user` parameter.'''
    if not (env.has_key("use_sudo") and env.use_sudo):
        return fab.run(command, shell, pty, combine_stderr)
    else:
        if env.has_key("sudo_user"):
            return fab.sudo(command, shell, pty, combine_stderr, user=env.sudo_user)
        else:
            return fab.sudo(command, shell, pty, combine_stderr)
예제 #11
0
def rollback_code():
    """Rolls back to the previously deployed version"""
    if not env.has_key('releases'):
        releases()
    if env.has_key('previous_release'):
        sudo(
            "ln -nfs %(previous_release)s %(current_path)s && rm -rf %(current_release)s"
            % {
                'current_release': env.current_release,
                'previous_release': env.previous_release,
                'current_path': env.current_path
            })
    else:
        print "no releases older then current"
        sys.exit(1)
예제 #12
0
def update_env():
    """Update servers environment on the remote servers"""
    if not env.has_key('current_release'):
        releases()
    activate_virtualenv()
    run("%(pip_path)s install -r %(current_release)s/%(env_file)s" % { 'pip_path': fabconf['PIP_PATH'], 'current_release':env.current_release, 'env_file':env.env_file })
    permissions()
예제 #13
0
def symboliclink():
    if not env.has_key('current_release'):
        releases()
    local("ln -nfs %(current_release)s %(catalina_base)s/ROOT" % {
        'current_release': env.current_release,
        'catalina_base': env.catalina_base
    })
예제 #14
0
파일: pip.py 프로젝트: icejoywoo/denim
def install_requirements(revision=None, path_to_requirements=None,
                         upgrade=True, use_sudo=True, user=None,
                         path_to_log=None):
    """
    Install requirements with PIP.

    To install into a virtualenv use the :ref:`vitualenv.activate` context
    manager.

    :path_to_requirements: path to requirements file; default is:
        `*deploy_path*/app/*revision*/requirements.txt`
    :upgrade: when installing requirements fetch updates.
    :revision: A specific revision name.

    """
    if not path_to_requirements:
        path_to_requirements = paths.package_path(revision, 'requirements.txt')
    parameters = ['install']
    if env.has_key('proxy'):
        parameters.append('--proxy=%s' % env.proxy)
    if upgrade:
        parameters.append('--upgrade')
    if not path_to_log:
        path_to_log = paths.deploy_path('var/pip.log')
    parameters.append('-r %s' % path_to_requirements)
    utils.run_as('pip ' + ' '.join(parameters), use_sudo, user)
예제 #15
0
def setup_ubuntu():
    default_dist = "maverick"
    default_version = "10.10"
    env.sources_file = "/etc/apt/sources.list"
    version = (env.get("dist_name", default_dist),
               env.get("dist_version", default_version))
    sources = [
      "deb http://us.archive.ubuntu.com/ubuntu/ %s universe",
      "deb-src http://us.archive.ubuntu.com/ubuntu/ %s universe",
      "deb http://us.archive.ubuntu.com/ubuntu/ %s-updates universe",
      "deb-src http://us.archive.ubuntu.com/ubuntu/ %s-updates universe",
      "deb http://us.archive.ubuntu.com/ubuntu/ %s multiverse",
      "deb-src http://us.archive.ubuntu.com/ubuntu/ %s multiverse",
      "deb http://us.archive.ubuntu.com/ubuntu/ %s-updates multiverse",
      "deb-src http://us.archive.ubuntu.com/ubuntu/ %s-updates multiverse",
      "ppa:sun-java-community-team/sun-java6", # sun-java
      "deb http://downloads.mongodb.org/distros/ubuntu % s 10gen", # mongodb
      "deb http://cran.stat.ucla.edu/bin/linux/ubuntu %s/", # lastest R versions
      "deb http://nebc.nox.ac.uk/bio-linux/ unstable bio-linux", # Bio-Linux
      "deb http://archive.cloudera.com/debian %s-cdh3 contrib", # Hadoop
      "deb http://ppa.launchpad.net/freenx-team/ppa/ubuntu lucid main", # FreeNX PPA
      "deb http://download.virtualbox.org/virtualbox/debian %s contrib", # virtualbox
    ]
    env.std_sources = _add_source_versions(version, sources)
    env.python_version_ext = ""
    if not env.has_key("java_home"):
        # XXX look for a way to find JAVA_HOME automatically
        env.java_home = "/usr/lib/jvm/java-6-openjdk"
예제 #16
0
def update_environment():
    """ update server environment """
    if not env.has_key('current_release'):
        releases()
    run('{0} {1}'.format(env.virtualenv, env.current_release))
    run('{0}/bin/pip install -r {0}/requirements.txt'.format(
        env.current_release))
예제 #17
0
    def decorated(*args, **kwargs):
        env.setdefault('git_branch', 'master')
        env.setdefault('python_bin', 'python')
        env.setdefault('remote_owner', 'www-data')
        env.setdefault('remote_group', 'www-data')


        env.setdefault('domain_path', "%(base_dir)s/%(app_name)s" % \
                                  { 'base_dir':env.base_dir,
                                    'app_name':env.app_name })
        env.setdefault('current_path', "%(domain_path)s/current" % \
                                       { 'domain_path':env.domain_path })
        env.setdefault('releases_path', "%(domain_path)s/releases" % \
                                        { 'domain_path':env.domain_path })
        env.setdefault('shared_path', "%(domain_path)s/shared" % \
                                      { 'domain_path':env.domain_path })
        if not env.has_key('releases'):
            if dir_exists(env.releases_path):
                env.releases = sorted(
                    run('ls -x %(releases_path)s' % {
                        'releases_path': env.releases_path
                    }).split())

                if len(env.releases) >= 1:
                    env.current_revision = env.releases[-1]
                    env.current_release = "%(releases_path)s/%(current_revision)s" % \
                                                { 'releases_path':env.releases_path,
                                                  'current_revision':env.current_revision }
                if len(env.releases) > 1:
                    env.previous_revision = env.releases[-2]
                    env.previous_release = "%(releases_path)s/%(previous_revision)s" % \
                                                { 'releases_path':env.releases_path,
                                                  'previous_revision':env.previous_revision }
        return func(*args, **kwargs)
예제 #18
0
파일: fabfile.py 프로젝트: elkad/slipp
def symboliclink():
    if not env.has_key("current_release"):
        releases()
    local(
        "ln -nfs %(current_release)s %(catalina_base)s/ROOT"
        % {"current_release": env.current_release, "catalina_base": env.catalina_base}
    )
예제 #19
0
def _setup_scientificlinux():
    env.logger.info("ScientificLinux setup")
    if not hasattr(env, "python_version_ext"):
        env.python_version_ext = ""
    env.pip_cmd = "pip-python"
    if not env.has_key("java_home"):
        env.java_home = "/etc/alternatives/java_sdk"
예제 #20
0
def restart():
    """ restart the server using configured restart command """
    if (env.has_key('restart_command_is_sudo')
            and env.restart_command_is_sudo == 'True'):
        sudo(env.restart_command)
    else:
        run(env.restart_command)
예제 #21
0
def update_environment():
    """ update server environment """
    if not env.has_key('current_release'):
        releases()
    run('{0} {1}'.format(env.virtualenv, env.current_release))
    run('{0}/bin/pip install -r {0}/requirements.txt'.
        format(env.current_release))
예제 #22
0
def _setup_deb_general():
    """Shared settings for different debian based/derived distributions.
    """
    env.logger.debug("Debian-shared setup")
    env.sources_file = "/etc/apt/sources.list.d/cloudbiolinux.list"
    env.global_sources_file = "/etc/apt/sources.list"
    env.apt_preferences_file = "/etc/apt/preferences"
    if not hasattr(env, "python_version_ext"):
        env.python_version_ext = ""
    if not hasattr(env, "ruby_version_ext"):
        env.ruby_version_ext = "1.9.1"
    if not env.has_key("java_home"):
        # Try to determine java location from update-alternatives
        java_home = "/usr/lib/jvm/java-7-openjdk-amd64"
        with quiet():
            java_info = env.safe_run_output("update-alternatives --display java")
        for line in java_info.split("\n"):
            if line.strip().startswith("link currently points to"):
                java_home = line.split()[-1].strip()
                java_home = java_home.replace("/jre/bin/java", "")
        env.java_home = java_home
    shared_sources = [
        "deb http://download.virtualbox.org/virtualbox/debian %s contrib",  # virtualbox
    ]
    return shared_sources
예제 #23
0
 def changeUnixPassword(self,user,password=None,sudo=False):
     """
     Change Unix password for <user>
     with [password] (default: None) , prompted for the user ( Warning: this method is unsecure with shell history)
     in [sudo] mode (default False)
     """
     from crypt import crypt
     from getpass import getpass
     self.needSudo = eval(str(sudo).capitalize())
     if not env.has_key('changeUnixPassword'):
         env.changeUnixPassword = {}
     if not env.changeUnixPassword.has_key(user):
         if not password is None:
             env.changeUnixPassword[user] = crypt(password, 'salt')
         else:
             password = getpass('Enter a new password for user %s:' % user)
             password2 = getpass('Please re-enter the password for user %s:' % user)
             if password != password2:
                 print(red("ERROR:")+" the two passwords you've entered does not matched")
                 return False
             env.changeUnixPassword[user] = crypt(password, 'salt')
     result = self._fabrun('usermod --password %s %s' % (env.changeUnixPassword[user], user), False)
     if result.succeeded:
         print(env.host+"|password "+green("SUCCESSFULLY")+" updated for <"+blue(user)+"> user")
         return True
     else:
         print(env.host+"|"+red("FAILED")+" to update password for <"+blue(user)+"> user. Reason: <"+yellow(result)+">")
         return False
예제 #24
0
파일: fabfile.py 프로젝트: cash2one/source
def migrate():
    """Run the migrate task"""
    if not env.has_key('current_release'):
        releases()
    with cd(env.current_release):
        run("source env/bin/activate; python %(app_name)s/manage.py syncdb --migrate --noinput"
            % {'app_name': env.app_name})
예제 #25
0
def _setup_scientificlinux():
    env.logger.info("ScientificLinux setup")
    if not hasattr(env, "python_version_ext"):
        env.python_version_ext = ""
    env.pip_cmd = "pip-python"
    if not env.has_key("java_home"):
        env.java_home = "/etc/alternatives/java_sdk"
예제 #26
0
    def decorated(*args, **kwargs):
        env.setdefault('use_sudo', True)
        env.setdefault('git_branch', 'master')
        env.setdefault('python_bin', 'python')
        env.setdefault('remote_owner', 'www-data')
        env.setdefault('remote_group', 'www-data')
        env.setdefault('pip_install_command', 'pip install -r requirements.txt')


        env.setdefault('domain_path', "%(base_dir)s/%(app_name)s" % \
                                  { 'base_dir':env.base_dir,
                                    'app_name':env.app_name })
        env.setdefault('current_path', "%(domain_path)s/current" % \
                                       { 'domain_path':env.domain_path })
        env.setdefault('releases_path', "%(domain_path)s/releases" % \
                                        { 'domain_path':env.domain_path })
        env.setdefault('shared_path', "%(domain_path)s/shared" % \
                                      { 'domain_path':env.domain_path })
        if not env.has_key('releases'):
            if dir_exists(env.releases_path):
                env.releases = sorted(run('ls -x %(releases_path)s' % { 'releases_path':env.releases_path }).split())

                if len(env.releases) >= 1:
                    env.current_revision = env.releases[-1]
                    env.current_release = "%(releases_path)s/%(current_revision)s" % \
                                                { 'releases_path':env.releases_path,
                                                  'current_revision':env.current_revision }
                if len(env.releases) > 1:
                    env.previous_revision = env.releases[-2]
                    env.previous_release = "%(releases_path)s/%(previous_revision)s" % \
                                                { 'releases_path':env.releases_path,
                                                  'previous_revision':env.previous_revision }
        return func(*args, **kwargs)
예제 #27
0
def common_symlink():
    if not env.has_key('current_release'):
        execute(common_releases)
    run("ln -nfs %(current_release)s %(current_path)s" % {
        'current_release': env.current_release,
        'current_path': env.current_path
    })
예제 #28
0
def _setup_deb_general():
    """Shared settings for different debian based/derived distributions.
    """
    env.logger.debug("Debian-shared setup")
    env.sources_file = "/etc/apt/sources.list.d/cloudbiolinux.list"
    env.global_sources_file = "/etc/apt/sources.list"
    env.apt_preferences_file = "/etc/apt/preferences"
    if not hasattr(env, "python_version_ext"):
        env.python_version_ext = ""
    if not hasattr(env, "ruby_version_ext"):
        env.ruby_version_ext = "1.9.1"
    if not env.has_key("java_home"):
        # Try to determine java location from update-alternatives
        java_home = "/usr/lib/jvm/java-7-openjdk-amd64"
        with quiet():
            java_info = env.safe_run_output(
                "update-alternatives --display java")
        for line in java_info.split("\n"):
            if line.strip().startswith("link currently points to"):
                java_home = line.split()[-1].strip()
                java_home = java_home.replace("/jre/bin/java", "")
        env.java_home = java_home
    shared_sources = [
        "deb http://nebc.nerc.ac.uk/bio-linux/ unstable bio-linux",  # Bio-Linux
        "deb http://download.virtualbox.org/virtualbox/debian %s contrib",  # virtualbox
    ]
    return shared_sources
예제 #29
0
def _setup_centos():
    env.logger.info("CentOS setup")
    env.python_version_ext = "2.6"
    env.ruby_version_ext = ""
    env.pip_cmd = "pip-python"
    if not env.has_key("java_home"):
        env.java_home = "/etc/alternatives/java_sdk"
예제 #30
0
def _setup_centos():
    env.logger.info("CentOS setup")
    env.python_version_ext = "2.6"
    env.ruby_version_ext = ""
    env.pip_cmd = "pip-python"
    if not env.has_key("java_home"):
        env.java_home = "/etc/alternatives/java_sdk"
예제 #31
0
파일: fabfile.py 프로젝트: jivoi/fabric
def copy_config():
        """Copy custom config to the remote servers"""
        if not env.has_key('releases'):    #определяем последний релиз, в который нам надо положить конфиг
                releases()
        put("%s" % env.config_file, "/tmp/config.php")
        sudo("cp /tmp/config.php %(current_release)s/config/" % { 'current_release':env.current_release })
        run("rm /tmp/config.php")
예제 #32
0
def symlink():
    """Updates the symlink to the most recently deployed version"""
    if not env.has_key('current_release'):
        releases()
    run("ln -nfs %(current_release)s %(current_path)s" % {
        'current_release': env.current_release,
        'current_path': env.current_path
    })
    run("ln -nfs %(shared_path)s/log %(current_release)s/log" % {
        'shared_path': env.shared_path,
        'current_release': env.current_release
    })
    run("ln -nfs %(shared_path)s/index %(current_release)s/index" % {
        'shared_path': env.shared_path,
        'current_release': env.current_release
    })
    run("ln -nfs %(shared_path)s/cdlm.db %(current_release)s/cdlm.db" % {
        'shared_path': env.shared_path,
        'current_release': env.current_release
    })
    run(
        "ln -nfs %(shared_path)s/system/local.py %(current_release)s/%(app_name)s/local.py"
        % {
            'shared_path': env.shared_path,
            'current_release': env.current_release,
            'app_name': env.app_name
        })
    run("ln -nfs %(current_release)s/env/src/django/django/contrib/admin/media %(current_release)s/%(app_name)s/media/admin"
        % {
            'current_release': env.current_release,
            'app_name': env.app_name
        })
예제 #33
0
def restart():
    """ restart the server using configured restart command """
    if (env.has_key('restart_command_is_sudo')
        and env.restart_command_is_sudo == 'True'):
        sudo(env.restart_command)
    else:
        run(env.restart_command)
예제 #34
0
파일: fabfile.py 프로젝트: cash2one/source
def symlink():
    """Updates the symlink to the most recently deployed version"""
    if not env.has_key('current_release'):
        releases()
    run("ln -nfs %(current_release)s %(current_path)s" % {
        'current_release': env.current_release,
        'current_path': env.current_path
    })
    run("ln -nfs %(shared_path)s/log %(current_release)s/log" % {
        'shared_path': env.shared_path,
        'current_release': env.current_release
    })
    run("ln -nfs %(shared_path)s/pictures %(current_release)s/eloue/media/pictures"
        % {
            'shared_path': env.shared_path,
            'current_release': env.current_release
        })
    run(
        "ln -nfs %(shared_path)s/system/local.py %(current_release)s/%(app_name)s/local.py"
        % {
            'shared_path': env.shared_path,
            'current_release': env.current_release,
            'app_name': env.app_name
        })
    run("ln -nfs %(current_release)s/env/lib/python2.6/site-packages/django/contrib/admin/media %(current_release)s/%(app_name)s/media/admin"
        % {
            'current_release': env.current_release,
            'app_name': env.app_name
        })
예제 #35
0
    def _install_php(self):
        """
        Install Php and adapters for nginx and postgres
        """
        vars = {'DBNAME': self.env.scf_dbname, 'USERNAME': self.env.scf_username,
                'PASSWORD': self.env.scf_password, 'DEST_DIR': self.env.scf_dest_dir,
                'SITE_NAME': self.env.scf_site_name}
        run("sudo sed -i 's/max_execution_time = 30$/max_execution_time = 600/g' /etc/php5/fpm/php.ini")
        run("sudo sed -i 's/;request_terminate_timeout = 0$/request_terminate_timeout = 600/g' /etc/php5/fpm/pool.d/www.conf")
        run("sudo sed -i 's/www-data/galaxy/g' /etc/php5/fpm/pool.d/www.conf")
        run("sudo sed -i 's/local   all             postgres                                peer/local   all             postgres                                trust/g' /etc/postgresql/9.1/main/pg_hba.conf")
        if env.has_key("scf_standalone"):
            env.nginx_upload_store_path = env.nginx_upload_store_path_SCF_standalone
        run("mkdir -p %(DEST_DIR)s " % vars)
        with cd(vars['DEST_DIR']):
            run("sudo rm -rf gvl-scf")
            run("git clone git://github.com/Traksewt/gvl-scf.git")
            with cd('gvl-scf/sites/all/modules/custom'):
                run("git clone git://github.com/Traksewt/journalstream.git")
            run("wget https://s3-ap-southeast-2.amazonaws.com/gvl-scf/fix-permissions.sh")
            run("chmod +x fix-permissions.sh")
            run("sudo ./fix-permissions.sh --drupal_path=gvl-scf --drupal_user=ubuntu")
            run("cp gvl-scf/sites/default/default.settings.php gvl-scf/sites/default/settings.php")
            run("sed -i 's/\[DATABASE\]/%(DBNAME)s/g'  gvl-scf/sites/default/settings.php" % vars)
            run("sed -i 's/\[USERNAME\]/%(USERNAME)s/g'  gvl-scf/sites/default/settings.php" % vars)
            run("sed -i 's/\[PASSWORD\]/%(PASSWORD)s/g'  gvl-scf/sites/default/settings.php" % vars)
#            run("sudo sed -i 's/\#write_enable=YES/write_enable=YES/g'  /etc/vsftpd.conf" )
            
            
            
            run("sudo sed -i 's/cgi\.fix_pathinfo=0/cgi\.fix_pathinfo=1/g'  /etc/php5/fpm/php.ini")

            run("chmod 770 gvl-scf/sites/default/settings.php")
            run("sudo chown ubuntu:galaxy gvl-scf/sites/default/settings.php")
            run("echo \"localhost:5432:*:%(USERNAME)s:%(PASSWORD)s\" > ~/.pgpass" % vars)
            run("chmod 600 ~/.pgpass")
            run("sudo /etc/init.d/postgresql reload")
            with settings(warn_only=True):
                run("dropdb -U postgres %(DBNAME)s" % vars)
                run("psql -U postgres    -c \" DROP ROLE %(USERNAME)s;\"" % vars)
        #echo "Dropped old database"
            run("psql -U postgres -c \" CREATE ROLE %(USERNAME)s LOGIN CREATEDB PASSWORD '%(PASSWORD)s';\""
                % vars)
            run("createdb -U postgres --encoding=UTF8 --owner=%(USERNAME)s %(DBNAME)s" % vars)
        #echo "Created new database: $DBNAME"
            run("sudo /etc/init.d/php5-fpm restart")

        with settings(warn_only=True):
            run("sudo killall nginx")
            run("sudo mkdir -p %(nginx_upload_store_path)s" % env)
        run("sudo /opt/galaxy/sbin/nginx")
        with cd("%(DEST_DIR)s/gvl-scf" % vars):
            run("drush site-install scf_vm --yes --account-name=admin --account-pass=%(PASSWORD)s --db-url=pgsql://%(USERNAME)s:%(PASSWORD)s@localhost/%(DBNAME)s --site-name=%(SITE_NAME)s" % vars)
            run("drush cc all")
        run("rm ~/.pgpass")
        with cd(vars['DEST_DIR']):
            run("sudo /etc/init.d/php5-fpm restart")
            run("rm fix-permissions.sh")
        run("sudo chown -R ubuntu:galaxy %(DEST_DIR)s " % vars)
예제 #36
0
    def _install_php(self):
        """
        Install Php and adapters for nginx and postgres
        """
        vars = {'DBNAME': self.env.scf_dbname, 'USERNAME': self.env.scf_username,
                'PASSWORD': self.env.scf_password, 'DEST_DIR': self.env.scf_dest_dir,
                'SITE_NAME': self.env.scf_site_name}
        run("sudo sed -i 's/max_execution_time = 30$/max_execution_time = 600/g' /etc/php5/fpm/php.ini")
        run("sudo sed -i 's/;request_terminate_timeout = 0$/request_terminate_timeout = 600/g' /etc/php5/fpm/pool.d/www.conf")
        run("sudo sed -i 's/www-data/galaxy/g' /etc/php5/fpm/pool.d/www.conf")
        run("sudo sed -i 's/local   all             postgres                                peer/local   all             postgres                                trust/g' /etc/postgresql/9.1/main/pg_hba.conf")
        if env.has_key("scf_standalone"):
            env.nginx_upload_store_path = env.nginx_upload_store_path_SCF_standalone
        run("mkdir -p %(DEST_DIR)s " % vars)
        with cd(vars['DEST_DIR']):
            run("sudo rm -rf gvl-scf")
            run("git clone git://github.com/Traksewt/gvl-scf.git")
            with cd('gvl-scf/sites/all/modules/custom'):
                run("git clone git://github.com/Traksewt/journalstream.git")
            run("wget https://s3-ap-southeast-2.amazonaws.com/gvl-scf/fix-permissions.sh")
            run("chmod +x fix-permissions.sh")
            run("sudo ./fix-permissions.sh --drupal_path=gvl-scf --drupal_user=ubuntu")
            run("cp gvl-scf/sites/default/default.settings.php gvl-scf/sites/default/settings.php")
            run("sed -i 's/\[DATABASE\]/%(DBNAME)s/g'  gvl-scf/sites/default/settings.php" % vars)
            run("sed -i 's/\[USERNAME\]/%(USERNAME)s/g'  gvl-scf/sites/default/settings.php" % vars)
            run("sed -i 's/\[PASSWORD\]/%(PASSWORD)s/g'  gvl-scf/sites/default/settings.php" % vars)
#            run("sudo sed -i 's/\#write_enable=YES/write_enable=YES/g'  /etc/vsftpd.conf" )



            run("sudo sed -i 's/cgi\.fix_pathinfo=0/cgi\.fix_pathinfo=1/g'  /etc/php5/fpm/php.ini")

            run("chmod 770 gvl-scf/sites/default/settings.php")
            run("sudo chown ubuntu:galaxy gvl-scf/sites/default/settings.php")
            run("echo \"localhost:5432:*:%(USERNAME)s:%(PASSWORD)s\" > ~/.pgpass" % vars)
            run("chmod 600 ~/.pgpass")
            run("sudo /etc/init.d/postgresql reload")
            with settings(warn_only=True):
                run("dropdb -U postgres %(DBNAME)s" % vars)
                run("psql -U postgres    -c \" DROP ROLE %(USERNAME)s;\"" % vars)
        #echo "Dropped old database"
            run("psql -U postgres -c \" CREATE ROLE %(USERNAME)s LOGIN CREATEDB PASSWORD '%(PASSWORD)s';\""
                % vars)
            run("createdb -U postgres --encoding=UTF8 --owner=%(USERNAME)s %(DBNAME)s" % vars)
        #echo "Created new database: $DBNAME"
            run("sudo /etc/init.d/php5-fpm restart")

        with settings(warn_only=True):
            run("sudo killall nginx")
            run("sudo mkdir -p %(nginx_upload_store_path)s" % env)
        run("sudo /opt/galaxy/sbin/nginx")
        with cd("%(DEST_DIR)s/gvl-scf" % vars):
            run("drush site-install scf_vm --yes --account-name=admin --account-pass=%(PASSWORD)s --db-url=pgsql://%(USERNAME)s:%(PASSWORD)s@localhost/%(DBNAME)s --site-name=%(SITE_NAME)s" % vars)
            run("drush cc all")
        run("rm ~/.pgpass")
        with cd(vars['DEST_DIR']):
            run("sudo /etc/init.d/php5-fpm restart")
            run("rm fix-permissions.sh")
        run("sudo chown -R ubuntu:galaxy %(DEST_DIR)s " % vars)
예제 #37
0
파일: fabfile.py 프로젝트: kery-chen/pcapi
def _update_env():
    """Update servers environment on the remote servers"""
    if not env.has_key('current_release'):
        _releases()
    run("cd %(current_release)s; virtualenv --no-site-packages ." % { 'current_release':env.current_release })
    run("cd %(current_release)s; ./bin/pip -q install -r %(domain_path)s/%(env_file)s" % { 'current_release':env.current_release, 'domain_path':env.domain_path, 'env_file':env.env_file })
    _install_custom_remotely_pysqlite()
    _remote_configure_ini()
예제 #38
0
def create_release_archive():
  """Checkouts and tars the project"""
  if not env.has_key('new_release_name'):
    env.new_release_name = "%.0f" % time()
    env.new_release_gz = "%s%s" % (env.new_release_name, ".tar.gz")
    with lcd(env.tmp_dir):
      local("git clone %s %s" % (env.repo, env.new_release_name))
      local("gnutar -cvzf %s %s" % (env.new_release_gz, env.new_release_name))
예제 #39
0
def remote(command, shell=True, pty=True, combine_stderr=True):
    '''Runs a remote command using either `run()` or `sudo()`.  If
    `env.use_sudo` is exists and is true, `sudo()` is used.  Otherwise,
    `run()` is used.  Using sudo, if `env.sudo_user` is set, the value of
    that expression will be passed to `sudo()` as the `user` parameter.
    Otherwise, the command will be executed without a `user` parameter.'''
    if not (env.has_key("use_sudo") and env.use_sudo):
        return fab.run(command, shell, pty, combine_stderr)
    else:
        if env.has_key("sudo_user"):
            return fab.sudo(command,
                            shell,
                            pty,
                            combine_stderr,
                            user=env.sudo_user)
        else:
            return fab.sudo(command, shell, pty, combine_stderr)
예제 #40
0
파일: django.py 프로젝트: unistra/pydiploy
def application_packages(update=False):
    """ Installs all packages for django webapp """
    fabtools.require.deb.packages(['gettext'], update=update)

    if env.remote_python_version >= 3:
        fabric.api.execute(pydiploy.require.system.check_python3_install,
                           version='python%s' % env.remote_python_version)
    fabric.api.execute(pydiploy.require.python.utils.python_pkg)
    if env.has_key('extra_ppa_to_install'):
        fabric.api.execute(
            pydiploy.require.system.install_extra_ppa, env.extra_ppa_to_install)
    if env.has_key('extra_source_to_install'):
        fabric.api.execute(
            pydiploy.require.system.install_extra_source, env.extra_source_to_install)
    if env.has_key('extra_pkg_to_install'):
        fabric.api.execute(
            pydiploy.require.system.install_extra_packages, env.extra_pkg_to_install)
예제 #41
0
def symlink():
    """Updates the symlink to the most recently deployed version"""
    if not env.has_key('current_release'):
        releases()
    sudo("ln -nfs %(current_release)s %(current_path)s" % {
        'current_release': env.current_release,
        'current_path': env.current_path
    })
def _collectstatic():
    print 'collectstatic',
    sys.stdout.flush()
    if not env.has_key('current_release'):
        _releases()
    with cd('%(current_release)s/django' % env):
        r = run('%(activate)s; python manage.py collectstatic --noinput' % env, quiet=True)
    _print_result(r)
def _compilemessages():
    print 'compilemessages',
    sys.stdout.flush()
    if not env.has_key('current_release'):
        _releases()
    with cd('%(current_release)s/%(app_name)s' % env):
        r = run('%(activate)s; python manage.py compilemessages' % env, quiet=True)
    _print_result(r)
def _migrate():
    """south migrate"""
    print 'migrate',
    sys.stdout.flush()
    if not env.has_key('current_release'):
        _releases()
    with cd('%(current_release)s/django' % env):
        r = run('%(activate)s; python manage.py migrate' % env, quiet=True)
    _print_result(r)
def _update_env():
    """Update servers environment on the remote servers"""
    print 'pip install'
    sys.stdout.flush()
    if not env.has_key('current_release'):
        _releases()

    with cd(env.current_release):
        run('%(activate)s; pip install -r %(pip_file)s' % env, quiet=True)
예제 #46
0
def symlink():
    if not env.has_key('current_release'):
        releases()

    links = ('log', '.env')
    for link in links:
        run('ln -nfs {1}/shared/{0} {2}/{0}'.format(link, env.base_dir,
                                                    env.current_release))
    run('ln -nfs {0} {1}/current'.format(env.current_release, env.base_dir))
예제 #47
0
파일: fabfile.py 프로젝트: cash2one/source
def update_env():
    """Update servers environment on the remote servers"""
    if not env.has_key('current_release'):
        releases()
    with cd(env.current_release):
        run("virtualenv -q --no-site-packages --unzip-setuptools env")
        run("env/bin/pip -q install -r %(env_file)s" %
            {'env_file': env.env_file})
    permissions()
예제 #48
0
def migrate():
    """Run the migrate task"""
    if not env.has_key('current_release'):
        releases()
    run("source %(current_release)s/env/bin/activate; cd %(current_release)s; python %(app_name)s/manage.py migrate"
        % {
            'current_release': env.current_release,
            'app_name': env.app_name
        })
예제 #49
0
def update_env():
    """Update servers environment on the remote servers"""
    if not env.has_key('current_release'):
        releases()
    run("cd %(current_release)s; virtualenv --no-site-packages --unzip-setuptools env" %
        {'current_release': env.current_release})
    run("pip -q install -E %(current_release)s/env -r %(current_release)s/%(env_file)s" %
        {'current_release': env.current_release, 'env_file': env.env_file})
    permissions()
예제 #50
0
def cleanup():
    """Clean up old releases"""
    if not env.has_key('releases'):
        releases()
    if len(env.releases) > 3:
        directories = env.releases
        directories.reverse()
        del directories[:3]
        env.directories = ' '.join([ "%(releases_path)s/%(release)s" % { 'releases_path':env.releases_path, 'release':release } for release in directories ])
        run("rm -rf %(directories)s" % { 'directories':env.directories })
def cleanup():
    """Clean up old releases"""
    if not env.has_key('releases'):
        _releases()
    if len(env.releases) > 3:
        directories = env.releases
        directories.reverse()
        del directories[:3]
        env.directories = ' '.join([ '%(releases_path)s/%(release)s' % { 'releases_path':env.releases_path, 'release':release } for release in directories ])
        run('rm -rf %(directories)s' % env, quiet=True)
예제 #52
0
def symlink():
    """Updates the symlink to the most recently deployed version"""
    if not env.has_key('current_release'):
        releases()
    run("ln -nfs %(current_release)s %(current_path)s" % { 'current_release':env.current_release, 'current_path':env.current_path })
    run("ln -nfs %(shared_path)s/log %(current_release)s/log" % { 'shared_path':env.shared_path, 'current_release':env.current_release })
    run("ln -nfs %(shared_path)s/index %(current_release)s/index" % { 'shared_path':env.shared_path, 'current_release':env.current_release })
    run("ln -nfs %(shared_path)s/cdlm.db %(current_release)s/cdlm.db" % { 'shared_path':env.shared_path, 'current_release':env.current_release })
    run("ln -nfs %(shared_path)s/system/local.py %(current_release)s/%(app_name)s/local.py" % { 'shared_path':env.shared_path, 'current_release':env.current_release, 'app_name':env.app_name })
    run("ln -nfs %(current_release)s/env/src/django/django/contrib/admin/media %(current_release)s/%(app_name)s/media/admin" % { 'current_release':env.current_release, 'app_name':env.app_name })
예제 #53
0
def copy_config():
    """Copy custom config to the remote servers"""
    if not env.has_key(
            'releases'
    ):  #определяем последний релиз, в который нам надо положить конфиг
        releases()
    put("%s" % env.config_file, "/tmp/config.php")
    sudo("cp /tmp/config.php %(current_release)s/config/" %
         {'current_release': env.current_release})
    run("rm /tmp/config.php")
예제 #54
0
파일: fabfile.py 프로젝트: jivoi/fabric
def cleanup():
        """Clean up old releases"""
        if not env.has_key('releases'):
                releases()
        if len(env.releases) > 10:
                directories = env.releases
                directories.reverse()
                del directories[:10]
                env.directories = ' '.join([ "%(releases_path)s/%(release)s" % { 'releases_path':env.releases_path, 'release':release } for release in directories ])
                sudo("rm -rf %(directories)s" % { 'directories':env.directories })
예제 #55
0
def rollback_code():
    """Rolls back to the previously deployed version"""
    if not env.has_key('releases'):
        releases()
    if len(env.releases) >= 2:
        env.current_release = env.releases[-1]
        env.previous_revision = env.releases[-2]
        env.current_release = "%(releases_path)s/%(current_revision)s" % { 'releases_path':env.releases_path, 'current_revision':env.current_revision }
        env.previous_release = "%(releases_path)s/%(previous_revision)s" % { 'releases_path':env.releases_path, 'previous_revision':env.previous_revision }
        run("rm %(current_path)s; ln -s %(previous_release)s %(current_path)s && rm -rf %(current_release)s" % { 'current_release':env.current_release, 'previous_release':env.previous_release, 'current_path':env.current_path })
예제 #56
0
def cleanup():
    green_alert('Cleanning up old release(s)')
    if not env.has_key('releases'):
        _releases()

    if len(env.releases) > env.keep_releases:
        directories = env.releases
        directories.reverse()
        del directories[:env.keep_releases]
        with cd(env.releases_path):
            run('rm -rf %s' % ' '.join(directories))
예제 #57
0
def _setup_centos():
    env.logger.info("CentOS setup")
    if not hasattr(env, "python_version_ext"):
        # use installed anaconda version instead of package 2.6
        #env.python_version_ext = "2.6"
        env.python_version_ext = ""
    #env.pip_cmd = "pip-python"
    if not hasattr(env, "ruby_version_ext"):
        env.ruby_version_ext = ""
    if not env.has_key("java_home"):
        env.java_home = "/etc/alternatives/java_sdk"
예제 #58
0
def update_env():
    """Update servers environment on the remote servers"""
    if not env.has_key('current_release'):
        releases()
    run("cd %(current_release)s; virtualenv --no-site-packages --unzip-setuptools env"
        % {'current_release': env.current_release})
    run("pip -q install -E %(current_release)s/env -r %(current_release)s/%(env_file)s"
        % {
            'current_release': env.current_release,
            'env_file': env.env_file
        })
    permissions()
예제 #59
0
def get_jinja():
    global jinja
    if jinja == None:
        template_dirs = [ env['otto.blog.template_dir'] ]
        if env.has_key('otto.template_dir'):
            template_dirs.insert(0, env['otto.template_dir'])
        jinja = Environment(
            loader=FileSystemLoader(template_dirs),
            extensions=['jinja2.ext.loopcontrols', 'jinja2.ext.autoescape'],
            autoescape=True,
            )
    return jinja