Example #1
0
def create_tyr_instance(instance):
    """ Create a *private* tyr instance based on the given name
        * postgresql user + dedicated database (1 time)
        * /etc/tyr.d/instance.ini
        * create /srv/ed/<instance> + target-file basedir
    """
    # postgresql user + dedicated database
    # we create a user and a db if they does not exists
    # TODO: this is potentially executed multiple times !
    execute(db.create_instance_db, instance)

    # /srv/ed/destination/$instance & /srv/ed/backup/$instance
    utils.require_directory(instance.base_ed_dir,
                            owner=env.KRAKEN_USER, group=env.KRAKEN_USER, use_sudo=True)
    utils.require_directory(instance.source_dir,
                            owner=env.KRAKEN_USER, group=env.KRAKEN_USER, use_sudo=True)
    utils.require_directory(instance.backup_dir, is_on_nfs4=True,
                            owner=env.KRAKEN_USER, group=env.KRAKEN_USER, use_sudo=True)
    utils.require_directory(instance.base_destination_dir, is_on_nfs4=True,
                            owner=env.KRAKEN_USER, group=env.KRAKEN_USER, use_sudo=True)

    utils.require_directory(env.tyr_base_logdir,
                      owner=env.TYR_USER, group=env.TYR_USER,
                      mode='755', use_sudo=True)
    require.files.file(os.path.join(env.tyr_base_logdir, instance.name + '.log'),
                      owner=env.TYR_USER, group=env.TYR_USER,
                      mode='644', use_sudo=True)

    update_tyr_instance_conf(instance)  # Note it is not called as a task, for it needs to be done on the same server

    if not env.standalone:
        #@TODO: change user for non standalone
        pass
Example #2
0
def update_tyr_instance_conf(instance):
    _upload_template(
        "tyr/instance.ini.jinja",
        "{}/{}.ini".format(env.tyr_base_instances_dir, instance.name),
        context={
            'env': env,
            'instance': instance,
        },
    )

    require_directory(instance.base_ed_dir,
                      owner=env.KRAKEN_USER,
                      group=env.KRAKEN_USER,
                      use_sudo=True)
    # /srv/ed/$instance/alembic.ini, used by update_ed_db()
    _upload_template(
        "tyr/ed_alembic.ini.jinja",
        "{}/alembic.ini".format(instance.base_ed_dir),
        context={
            'env': env,
            'instance': instance,
        },
    )

    #we need a settings file to init the db with postgis
    # will be deprecated when migrating to postgis 2.1
    _upload_template(
        "tyr/ed_settings.sh.jinja",
        "{}/settings.sh".format(instance.base_ed_dir),
        context={
            'env': env,
            'instance': instance,
        },
    )
Example #3
0
def update_tyr_instance_conf(instance):
    _upload_template("tyr/instance.ini.jinja",
                     "{}/{}.ini".format(env.tyr_base_instances_dir, instance.name),
                     context={
                         'env': env,
                         'instance': instance,
                     },
    )

    require_directory(instance.base_ed_dir,
                            owner=env.KRAKEN_USER, group=env.KRAKEN_USER, use_sudo=True)
    # /srv/ed/$instance/alembic.ini, used by update_ed_db()
    _upload_template("tyr/ed_alembic.ini.jinja",
                     "{}/alembic.ini".format(instance.base_ed_dir),
                     context={
                         'env': env,
                         'instance': instance,
                     },
    )

    #we need a settings file to init the db with postgis
    # will be deprecated when migrating to postgis 2.1
    _upload_template("tyr/ed_settings.sh.jinja",
                     "{}/settings.sh".format(instance.base_ed_dir),
                     context={
                         'env': env,
                         'instance': instance,
                     },
    )
Example #4
0
def setup_tyr_master():
    require_directory(env.ed_basedir, owner='www-data', group='www-data', use_sudo=True)
    if env.use_systemd:
        _upload_template('tyr/systemd_tyr_beat.jinja', env.service_name('tyr_beat'),
                         user='******', mode='644', context={'env': env})
    else:
        _upload_template('tyr/tyr_beat.jinja',env.service_name('tyr_beat'),
                         user='******', mode='755', context={'env': env})
    update_init(host='tyr')
Example #5
0
def setup_tyr_master():
    require_directory(env.ed_basedir, owner='www-data', group='www-data', use_sudo=True)
    if env.use_systemd:
        _upload_template('tyr/systemd_tyr_beat.jinja', env.service_name('tyr_beat'),
                         user='******', mode='644', context={'env': env})
    else:
        _upload_template('tyr/tyr_beat.jinja',env.service_name('tyr_beat'),
                         user='******', mode='755', context={'env': env})
    update_init(host='tyr')
Example #6
0
def setup_tyr():
    require.users.user('www-data')

    require_directories([env.tyr_base_instances_dir,
                               env.tyr_basedir,
                               ],
                              owner=env.TYR_USER,
                              group=env.TYR_USER,
                              mode='755',
                              use_sudo=True)

    require_directory(env.tyr_base_logdir,
                              owner=env.TYR_USER,
                              group=env.TYR_USER,
                              mode='777',
                              use_sudo=True)

    require_directory(env.tyr_base_destination_dir,
                              is_on_nfs4=False,
                              owner=env.TYR_USER,
                              group=env.TYR_USER,
                              mode='755',
                              use_sudo=True)

    require.files.file(env.tyr_base_logfile,
                              owner=env.TYR_USER,
                              group=env.TYR_USER,
                              mode='766',
                              use_sudo=True)

    require.files.file(env.tyr_logfile_pattern,
                              owner=env.TYR_USER,
                              group=env.TYR_USER,
                              mode='766',
                              use_sudo=True)

    update_tyr_confs()

    if env.use_systemd:
        _upload_template('tyr/systemd_tyr_worker.jinja', env.service_name('tyr_worker'),
                         user='******', mode='644', context={'env': env})
    else:
        _upload_template('tyr/tyr_worker.jinja', env.service_name('tyr_worker'),
                         user='******', mode='755', context={'env': env})
    update_init(host='tyr')

    if not files.is_dir(env.tyr_migration_dir):
        idempotent_symlink('/usr/share/tyr/migrations/', env.tyr_migration_dir, use_sudo=True)
        sudo("chown www-data:www-data {}".format(env.tyr_migration_dir))

    # we create a symlink for tyr manage_py
    tyr_symlink = os.path.join(env.tyr_basedir, 'manage.py')
    if not files.is_file(tyr_symlink):
        idempotent_symlink('/usr/bin/manage_tyr.py', tyr_symlink, use_sudo=True)
Example #7
0
def setup_tyr():
    require.users.user('www-data')

    require_directories([env.tyr_base_instances_dir,
                               env.tyr_basedir,
                               ],
                              owner=env.TYR_USER,
                              group=env.TYR_USER,
                              mode='755',
                              use_sudo=True)

    require_directory(env.tyr_base_logdir,
                              owner=env.TYR_USER,
                              group=env.TYR_USER,
                              mode='777',
                              use_sudo=True)

    require_directory(env.tyr_base_destination_dir,
                              is_on_nfs4=False,
                              owner=env.TYR_USER,
                              group=env.TYR_USER,
                              mode='755',
                              use_sudo=True)

    require.files.file(env.tyr_base_logfile,
                              owner=env.TYR_USER,
                              group=env.TYR_USER,
                              mode='766',
                              use_sudo=True)

    require.files.file(env.tyr_logfile_pattern,
                              owner=env.TYR_USER,
                              group=env.TYR_USER,
                              mode='766',
                              use_sudo=True)

    update_tyr_confs()

    if env.use_systemd:
        _upload_template('tyr/systemd_tyr_worker.jinja', env.service_name('tyr_worker'),
                         user='******', mode='644', context={'env': env})
    else:
        _upload_template('tyr/tyr_worker.jinja', env.service_name('tyr_worker'),
                         user='******', mode='755', context={'env': env})
    update_init(host='tyr')

    if not files.is_dir(env.tyr_migration_dir):
        idempotent_symlink('/usr/share/tyr/migrations/', env.tyr_migration_dir, use_sudo=True)
        sudo("chown www-data:www-data {}".format(env.tyr_migration_dir))

    # we create a symlink for tyr manage_py
    tyr_symlink = os.path.join(env.tyr_basedir, 'manage.py')
    if not files.is_file(tyr_symlink):
        idempotent_symlink('/usr/bin/manage_tyr.py', tyr_symlink, use_sudo=True)
Example #8
0
def rename_tyr_instance(current_instance, new_instance):

    # prepare the new instance name by creating all directory and files
    utils.require_directory(os.path.join(env.ed_basedir, new_instance),
                            owner=env.KRAKEN_USER, group=env.KRAKEN_USER, use_sudo=True)

    # current data.nav.lz4
    # FIXME: source dir is not the same on all platforms
    run("cp {basedir}/{current_instance}/{datanav} {basedir}/{new_instance}/"
        .format(basedir=env.ed_basedir,
                current_instance=current_instance,
                datanav=env.kraken_data_nav,
                new_instance=new_instance))
Example #9
0
def create_tyr_instance(instance):
    """ Create a *private* tyr instance based on the given name
        * postgresql user + dedicated database (1 time)
        * /etc/tyr.d/instance.ini
        * create /srv/ed/<instance> + target-file basedir
    """
    instance = get_real_instance(instance)
    execute(db.create_instance_db, instance)

    # /srv/ed/destination/$instance & /srv/ed/backup/$instance
    require_directory(instance.source_dir,
                            owner=env.KRAKEN_USER, group=env.KRAKEN_USER, use_sudo=True)
    require_directory(instance.backup_dir, is_on_nfs4=True,
                            owner=env.KRAKEN_USER, group=env.KRAKEN_USER, use_sudo=True)
    require_directory(instance.base_destination_dir, is_on_nfs4=True,
                            owner=env.KRAKEN_USER, group=env.KRAKEN_USER, use_sudo=True)

    require_directory(env.tyr_base_logdir,
                      owner=env.TYR_USER, group=env.TYR_USER,
                      mode='755', use_sudo=True)
    require.files.file(os.path.join(env.tyr_base_logdir, instance.name + '.log'),
                      owner=env.TYR_USER, group=env.TYR_USER,
                      mode='644', use_sudo=True)

    update_tyr_instance_conf(instance)  # Note it is not called as a task, for it needs to be done on the same server

    if not env.standalone:
        #@TODO: change user for non standalone
        pass
Example #10
0
def rename_tyr_instance(current_instance, new_instance):

    # prepare the new instance name by creating all directory and files
    utils.require_directory(os.path.join(env.ed_basedir, new_instance),
                            owner=env.KRAKEN_USER,
                            group=env.KRAKEN_USER,
                            use_sudo=True)

    # current data.nav.lz4
    # FIXME: source dir is not the same on all platforms
    run("cp {basedir}/{current_instance}/{datanav} {basedir}/{new_instance}/".
        format(basedir=env.ed_basedir,
               current_instance=current_instance,
               datanav=env.kraken_data_nav,
               new_instance=new_instance))
Example #11
0
def setup_tyr_master():
    utils.require_directory(env.ed_basedir, owner='www-data', group='www-data', use_sudo=True)
    _upload_template('tyr/tyr_beat.jinja', env.tyr_beat_service_file,
                     user='******', mode='755', context={'env': env})
Example #12
0
def setup_tyr():
    require.deb.packages([
        "alembic",
        "rabbitmq-server",
        'redis-server'])
    require.users.user('www-data')

    utils.require_directories([env.tyr_base_instances_dir,
                               env.tyr_basedir,
                               ],
                              owner=env.TYR_USER,
                              group=env.TYR_USER,
                              mode='755',
                              use_sudo=True)

    utils.require_directory(env.tyr_base_logdir,
                              owner=env.TYR_USER,
                              group=env.TYR_USER,
                              mode='777',
                              use_sudo=True)

    utils.require_directory(env.tyr_base_destination_dir,
                              is_on_nfs4=False,
                              owner=env.TYR_USER,
                              group=env.TYR_USER,
                              mode='755',
                              use_sudo=True)

    require.files.file(env.tyr_base_logfile,
                              owner=env.TYR_USER,
                              group=env.TYR_USER,
                              mode='766',
                              use_sudo=True)

    require.files.file(env.tyr_logfile_pattern,
                              owner=env.TYR_USER,
                              group=env.TYR_USER,
                              mode='766',
                              use_sudo=True)

    update_tyr_conf()

    # we need to deploy the services conf file
    _upload_template('tyr/tyr_beat.jinja', env.tyr_beat_service_file, user='******', mode='755',
                     context={
                         'env': env
                     })
    _upload_template('tyr/tyr_worker.jinja', env.tyr_worker_service_file, user='******', mode='755',
                     context={
                         'env': env
                     })

    if not files.is_dir(env.tyr_migration_dir):
        files.symlink('/usr/share/tyr/migrations/', env.tyr_migration_dir, use_sudo=True)
        sudo("chown www-data:www-data {}".format(env.tyr_migration_dir))

    # we create a symlink for tyr manage_py
    tyr_symlink = os.path.join(env.tyr_basedir, 'manage.py')
    if not files.is_file(tyr_symlink):
        files.symlink('/usr/bin/manage_tyr.py', tyr_symlink, use_sudo=True)

    service.start('rabbitmq-server')
    service.start('redis-server')
Example #13
0
def setup_tyr_master():
    utils.require_directory(env.ed_basedir, owner='www-data', group='www-data', use_sudo=True)
Example #14
0
def setup_tyr():
    require.deb.packages(["alembic", "rabbitmq-server", 'redis-server'])
    require.users.user('www-data')

    utils.require_directories([
        env.tyr_base_instances_dir,
        env.tyr_basedir,
    ],
                              owner=env.TYR_USER,
                              group=env.TYR_USER,
                              mode='755',
                              use_sudo=True)

    utils.require_directory(env.tyr_base_logdir,
                            owner=env.TYR_USER,
                            group=env.TYR_USER,
                            mode='777',
                            use_sudo=True)

    utils.require_directory(env.tyr_base_destination_dir,
                            is_on_nfs4=False,
                            owner=env.TYR_USER,
                            group=env.TYR_USER,
                            mode='755',
                            use_sudo=True)

    require.files.file(env.tyr_base_logfile,
                       owner=env.TYR_USER,
                       group=env.TYR_USER,
                       mode='766',
                       use_sudo=True)

    require.files.file(env.tyr_logfile_pattern,
                       owner=env.TYR_USER,
                       group=env.TYR_USER,
                       mode='766',
                       use_sudo=True)

    update_tyr_conf()

    # we need to deploy the services conf file
    _upload_template('tyr/tyr_beat.jinja',
                     env.tyr_beat_service_file,
                     user='******',
                     mode='755',
                     context={'env': env})
    _upload_template('tyr/tyr_worker.jinja',
                     env.tyr_worker_service_file,
                     user='******',
                     mode='755',
                     context={'env': env})

    if not files.is_dir(env.tyr_migration_dir):
        files.symlink('/usr/share/tyr/migrations/',
                      env.tyr_migration_dir,
                      use_sudo=True)
        sudo("chown www-data:www-data {}".format(env.tyr_migration_dir))

    # we create a symlink for tyr manage_py
    tyr_symlink = os.path.join(env.tyr_basedir, 'manage.py')
    if not files.is_file(tyr_symlink):
        files.symlink('/usr/bin/manage_tyr.py', tyr_symlink, use_sudo=True)

    service.start('rabbitmq-server')
    service.start('redis-server')
Example #15
0
def setup_tyr_master():
    utils.require_directory(env.ed_basedir,
                            owner='www-data',
                            group='www-data',
                            use_sudo=True)