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
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, }, )
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, }, )
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')
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)
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))
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
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))
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})
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')
def setup_tyr_master(): utils.require_directory(env.ed_basedir, owner='www-data', group='www-data', use_sudo=True)
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')