def create_eng_instance(instance): """ Create a new kraken instance (idempotent) * Install requirements * Deploy the binary, the templatized ini configuration in a dedicated directory with rights to www-data and the logdir * Deploy initscript and add it to startup * Start the service """ instance = get_real_instance(instance) for host in instance.kraken_engines: with settings(host_string=host): # base_conf require.files.directory(instance.kraken_basedir, owner=env.KRAKEN_USER, group=env.KRAKEN_USER, use_sudo=True) # logs require.files.directory(env.kraken_log_basedir, owner=env.KRAKEN_USER, group=env.KRAKEN_USER, use_sudo=True) update_eng_instance_conf(instance, host) # kraken.ini, pid and binary symlink kraken_bin = "{}/{}/kraken".format(env.kraken_basedir, instance.name) if not is_link(kraken_bin): idempotent_symlink("/usr/bin/kraken", kraken_bin, use_sudo=True) sudo('chown -h {user} {bin}'.format(user=env.KRAKEN_USER, bin=kraken_bin)) kraken = "kraken_{}".format(instance.name) if not service.is_running(kraken): # TODO test this on systemd machines if env.use_systemd: sudo("systemctl enable kraken_{}.service".format( instance.name)) else: sudo("update-rc.d kraken_{} defaults".format( instance.name)) print( blue( "INFO: kraken {instance} instance is starting on {server}, " "waiting 5 seconds, we will check if processus is running" .format(instance=instance.name, server=get_host_addr(env.host_string)))) service.start(kraken) run("sleep 5") # we wait a bit for the kraken to pop with settings(warn_only=True): run("pgrep --list-name --full /srv/kraken/{}/kraken".format( instance.name)) print( blue("INFO: kraken {instance} instance is running on {server}". format(instance=instance.name, server=get_host_addr(host))))
def set_kraken_binary(instance, old=False): instance = get_real_instance(instance) for host in instance.kraken_engines: with settings(host_string=host): kraken_bin = "{}/{}/kraken".format(env.kraken_basedir, instance.name) idempotent_symlink('/usr/bin/kraken' + ('.old' if old else ''), kraken_bin, use_sudo=True)
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 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 create_eng_instance(instance): """ Create a new kraken instance (idempotent) * Install requirements * Deploy the binary, the templatized ini configuration in a dedicated directory with rights to www-data and the logdir * Deploy initscript and add it to startup * Start the service """ instance = get_real_instance(instance) for host in instance.kraken_engines: with settings(host_string=host): # base_conf require.files.directory(instance.kraken_basedir, owner=env.KRAKEN_USER, group=env.KRAKEN_USER, use_sudo=True) # logs require.files.directory(env.kraken_log_basedir, owner=env.KRAKEN_USER, group=env.KRAKEN_USER, use_sudo=True) update_eng_instance_conf(instance, host) # kraken.ini, pid and binary symlink kraken_bin = "{}/{}/kraken".format(env.kraken_basedir, instance.name) if not is_link(kraken_bin): idempotent_symlink("/usr/bin/kraken", kraken_bin, use_sudo=True) sudo('chown -h {user} {bin}'.format(user=env.KRAKEN_USER, bin=kraken_bin)) kraken = "kraken_{}".format(instance.name) if not service.is_running(kraken): # TODO test this on systemd machines if env.use_systemd: sudo("systemctl enable kraken_{}.service".format(instance.name)) else: sudo("update-rc.d kraken_{} defaults".format(instance.name)) print(blue("INFO: kraken {instance} instance is starting on {server}, " "waiting 5 seconds, we will check if processus is running" .format(instance=instance.name, server=get_host_addr(env.host_string)))) service.start(kraken) run("sleep 5") # we wait a bit for the kraken to pop with settings(warn_only=True): run("pgrep --list-name --full /srv/kraken/{}/kraken".format(instance.name)) print(blue("INFO: kraken {instance} instance is running on {server}". format(instance=instance.name, server=get_host_addr(host))))
def set_kraken_binary(instance, old=False): instance = get_real_instance(instance) for host in instance.kraken_engines: with settings(host_string=host): kraken_bin = "{}/{}/kraken".format(env.kraken_basedir, instance.name) idempotent_symlink('/usr/bin/kraken' + ('.old' if old else ''), kraken_bin, use_sudo=True)