def gunicorn_ensure(path, template, config, venv_path='.venv'): with virtualenv(path, venv_path): python_package_ensure('gunicorn') run("cp %s %s" % (template, config)) file_update(config, lambda x: text_template(x,env)) dir_ensure('%s/logs' % path) dir_ensure('%s/run' % path)
def gunicorn_process_ensure(path, template, config, key_env, venv_path='.venv'): with virtualenv(path, venv_path): python_package_ensure('gunicorn') run("cp %s %s" % (template, config)) file_update(config, lambda x: text_template(x,key_env)) dir_ensure('%s/logs' % path) dir_ensure('%s/run' % path)
def gunicorn_supervisor_ensure(project_path, project_name, template, key_env): with mode_sudo(), cd(project_path): config = '/etc/supervisor/conf.d/%s.conf' % project_name package_ensure('supervisor') python_package_ensure('setproctitle') run("cp %s %s" % (template, config)) file_update(config, lambda x: text_template(x,key_env)) run("supervisorctl reread") run("supervisorctl update") run("supervisorctl restart %s" % (project_name))
def nginx_ensure(name, template): with mode_sudo(): package_ensure('nginx') run("cp %s /etc/nginx/sites-available/%s" % (template, name)) file_update('/etc/nginx/sites-available/%s' % name, lambda x: text_template(x,env)) if not file_exists("/etc/nginx/sites-enabled/%s" % name): run("ln -s -t /etc/nginx/sites-enabled /etc/nginx/sites-available/%s " % ( env.project_name)) file_unlink('/etc/nginx/sites-enabled/default') run("service nginx restart")
def gunicorn_supervisor_ensure(project_name, template): with mode_sudo(): config = '/etc/supervisor/conf.d/%s.conf' % project_name package_ensure('supervisor') python_package_ensure('setproctitle') run("cp %s %s" % (template, config)) file_update(config, lambda x: text_template(x,env)) run("supervisorctl reread") run("supervisorctl update") run("supervisorctl restart %s" % (project_name))
def nginx_ensure(project_path, name, template, key_env): with mode_sudo(), cd(project_path): package_ensure('nginx') run("cp %s /etc/nginx/sites-available/%s" % (template, name)) file_update('/etc/nginx/sites-available/%s' % name, lambda x: text_template(x,key_env)) if not file_exists("/etc/nginx/sites-enabled/%s" % name): run("ln -s -t /etc/nginx/sites-enabled /etc/nginx/sites-available/%s " % ( name)) file_unlink('/etc/nginx/sites-enabled/default') run("service nginx restart")
def file_update_line(file, startswith, update): def update_line(text): ret = [] for line in text.split('\n'): if line.strip().startswith(startswith): ret.append(update) else: ret.append(line) return "\n".join(ret) return file_update(file, update_line)
def reconfigure_interface(host, address, netmask, gateway): cuisine.connect('test%s' % i) # Assume only two interfaces: 'eth*' and 'lo' eth_name = cuisine.run('ifconfig -s').split('\n')[1].split()[0] interfaces_config = '''auto lo iface lo inet loopback auto %(eth_name)s iface %(eth_name)s inet static address %(address)s netmask %(netmask)s gateway %(gateway)s dns-nameservers 192.168.1.11 ''' interfaces_config = interfaces_config % {'eth_name': eth_name, 'address': address, 'netmask': netmask, 'gateway': gateway} cuisine.file_update('/etc/network/interfaces', lambda _: interfaces_config) cuisine.run('echo "ifdown %(eth_name)s; ifup %(eth_name)s" | at now + 1 minute' % {'eth_name': eth_name})
def reconfigure_interface(host, address, netmask, gateway): cuisine.connect('test%s' % i) # Assume only two interfaces: 'eth*' and 'lo' eth_name = cuisine.run('ifconfig -s').split('\n')[1].split()[0] interfaces_config = '''auto lo iface lo inet loopback auto %(eth_name)s iface %(eth_name)s inet static address %(address)s netmask %(netmask)s gateway %(gateway)s dns-nameservers 192.168.1.11 ''' interfaces_config = interfaces_config % { 'eth_name': eth_name, 'address': address, 'netmask': netmask, 'gateway': gateway } cuisine.file_update('/etc/network/interfaces', lambda _: interfaces_config) cuisine.run( 'echo "ifdown %(eth_name)s; ifup %(eth_name)s" | at now + 1 minute' % {'eth_name': eth_name})
def update_env_sh(): """ Update /usr/lib/hadoop/conf/hadoop-env.sh """ file = '/usr/lib/hadoop/conf/hadoop-env.sh' with mode_sudo(): file_update(file, _update_env_sh_like_this)
def django_config_ensure(path, template, config): with cd(path): run("cp %s %s" % (template, config)) file_update(config, lambda x: text_template(x,env))
def django_disable_debug_mode(project_path, config): with cd(project_path): file_update(config, lambda x: re.sub('DEBUG = \w*', 'DEBUG = False', x) )
def mount_line(line): if file_update('/etc/fstab', lambda _: text_ensure_line(_, line)): run('mount -a')
def django_config_ensure(project_path, template, config, key_env): with cd(project_path): run("cp %s %s" % (template, config)) file_update(config, lambda x: text_template(x, key_env))
def django_disable_debug_mode(project_path, config): with cd(project_path): file_update(config, lambda x: re.sub('DEBUG = \w*', 'DEBUG = False', x))