def server(version=None): """ Require a PostgreSQL server to be installed and running. :: from fabtools import require require.postgres.server() """ if version: pkg_name = 'postgresql-%s' % version else: pkg_name = 'postgresql' package(pkg_name) if is_file('/etc/init.d/postgresql'): service_name = 'postgresql' else: if version and is_file('/etc/init.d/postgresql-%s' % version): service_name = 'postgresql-%s' % version else: with cd('/etc/init.d'): with settings(hide('running', 'stdout')): service_name = run('ls postgresql-*').splitlines()[0] started(service_name)
def process(name, template_contents=None, template_source=None, **kwargs): """ Require a supervisor process """ deb.package('supervisor') config_filename = '/etc/supervisor/conf.d/%s.conf' % name context = {} context.update(kwargs) context['name'] = name if (template_contents is None) and (template_source is None): template_contents = DEFAULT_TEMPLATE template_file(config_filename, template_contents, template_source, context, use_sudo=True) reload_config() if process_status(name) == 'STOPPED': start_process(name)
def server(version=None, password=None): """ Require a MySQL server to be installed and running. Example:: from fabtools import require require.mysql.server(password='******') """ if version: pkg_name = 'mysql-server-%s' % version else: pkg_name = 'mysql-server' if not is_installed(pkg_name): if password is None: password = prompt_password() with settings(hide('running')): preseed_package('mysql-server', { 'mysql-server/root_password': ('password', password), 'mysql-server/root_password_again': ('password', password), }) package(pkg_name) started('mysql')
def server(version=None, password=None): """ Require a MySQL server to be installed and running. Example:: from fabtools import require require.mysql.server(password='******') """ if version: pkg_name = 'mysql-server-%s' % version else: pkg_name = 'mysql-server' if not is_installed(pkg_name): if password is None: password = prompt('Please enter password for MySQL user "root":' % user) with settings(hide('running')): preseed_package( 'mysql-server', { 'mysql-server/root_password': ('password', password), 'mysql-server/root_password_again': ('password', password), }) package(pkg_name) started('mysql')
def server(version=None, password=None): """ Require a MySQL server to be installed and running. Example:: from fabtools import require require.mysql.server(password='******') """ if version: pkg_name = "mysql-server-%s" % version else: pkg_name = "mysql-server" if not is_installed(pkg_name): if password is None: password = prompt_password() with settings(hide("running")): preseed_package( "mysql-server", { "mysql-server/root_password": ("password", password), "mysql-server/root_password_again": ("password", password), }, ) package(pkg_name) started("mysql")
def mongodb(version='2.6.4'): deb.key('7F0CEB10', keyserver='keyserver.ubuntu.com') deb.source('mongodb', 'http://downloads-distro.mongodb.org/repo/ubuntu-upstart', 'dist', '10gen') deb.package('mongodb-org', version=version, update=False) comment("/etc/mongod.conf", "^bind_ip.*", char='#', use_sudo=True) run('sudo service mongod restart')
def server(version='8.4'): """ Require a PostgreSQL server """ package('postgresql-%s' % version) service = 'postgresql-%s' % version if not is_file(os.path.join('/etc/init.d', service)): service = 'postgresql' started(service)
def test_install_debian_package_in_guest_context_manager(container): from fabtools.deb import update_index from fabtools.openvz import guest from fabtools.require.deb import package with guest(container): update_index() package('htop') assert is_file('/usr/bin/htop')
def server(): """ Require apache2 server to be installed and running. :: from fabtools import require require.apache2.server() """ package("apache2") started("apache2")
def deb_install_systemd(): "Install systemd and update grub config" if not deb.is_installed('systemd'): deb.package('systemd') with watch('/etc/default/grub') as etc_default_grub: sed('/etc/default/grub', 'GRUB_CMDLINE_LINUX_DEFAULT="quiet"', 'GRUB_CMDLINE_LINUX_DEFAULT="quiet init=/bin/systemd"') if etc_default_grub.changed: run('update-grub2') reboot() run('/bin/true')
def server(version=None): """ Require a PostgreSQL server """ if version: pkg_name = service_name = 'postgresql-%s' % version else: pkg_name = service_name = 'postgresql' package(pkg_name) if not is_file(os.path.join('/etc/init.d', service_name)): service_name = 'postgresql' started(service_name)
def server(): """ Require nginx server to be installed and running. :: from fabtools import require require.nginx.server() """ package('nginx') started('nginx')
def server(): """ Require apache2 server to be installed and running. :: from fabtools import require require.apache.server() """ package('apache2') require_started('apache2')
def server(): """ Require nginx server to be installed and running. :: from fabtools import require require.nginx.server() """ package('nginx') require_started('nginx')
def server(package='nginx'): """ Require nginx server to be installed and running. Allows override of package name to allow install of nginx-extras instead :: from fabtools import require require.nginx.server() """ package(package) require_started('nginx')
def server(): """ Require the Apache HTTP server to be installed and running. :: from fabtools import require require.apache.server() """ package('apache2') require_started('apache2')
def server(package_name='nginx'): """ Require nginx server to be installed and running. Allows override of package name, this allow to install other packages like `nginx-extras` or `nginx-light`. :: from fabtools import require require.nginx.server() """ package(package_name) require_started('nginx')
def server(package_name='nginx'): """ Require the nginx web server to be installed and running. You can override the system package name, if you need to install a specific variant such as `nginx-extras` or `nginx-light`. :: from fabtools import require require.nginx.server() """ package(package_name) require_started('nginx')
def server(version='5.1', password=None): """ Require a MySQL server """ if not is_installed("mysql-server-%s" % version): if password is None: password = prompt_password() with settings(hide('running')): preseed_package('mysql-server', { 'mysql-server/root_password': ('password', password), 'mysql-server/root_password_again': ('password', password), }) package('mysql-server-%s' % version) started('mysql')
def server(version=None): """ Require a PostgreSQL server to be installed and running. :: from fabtools import require require.postgres.server() """ if version: pkg_name = 'postgresql-%s' % version else: pkg_name = 'postgresql' package(pkg_name) started(_service_name(version))
def server(version='5.1', password=None): """ Require a MySQL server """ if not is_installed("mysql-server-%s" % version): if password is None: password = prompt_password() with settings(hide('running')): preseed_package( 'mysql-server', { 'mysql-server/root_password': ('password', password), 'mysql-server/root_password_again': ('password', password), }) package('mysql-server-%s' % version) started('mysql')
def firewall(zones=None, interfaces=None, policy=None, rules=None, routestopped=None, masq=None): """ Ensure that a firewall is configured. Example:: from fabtools.shorewall import * from fabtools import require # We need a firewall with some custom rules require.shorewall.firewall( rules=[ Ping(), SSH(), HTTP(), HTTPS(), SMTP(), rule(port=1234, source=hosts(['example.com'])), ] ) """ package('shorewall') with watch(CONFIG_FILES) as config: _zone_config(zones) _interfaces_config(interfaces) _policy_config(policy) _rules_config(rules) _routestopped_config(routestopped) _masq_config(masq) if config.changed: puts("Shorewall configuration changed") if is_started(): restart('shorewall') with settings(hide('running'), shell_env()): sed('/etc/default/shorewall', 'startup=0', 'startup=1', use_sudo=True)
def firewall(zones=None, interfaces=None, policy=None, rules=None, routestopped=None): """ Require a firewall """ package('shorewall') def on_change(): puts("Shorewall configuration changed") if is_started(): restart('shorewall') with watch(CONFIG_FILES, False, on_change): _zone_config(zones) _interfaces_config(interfaces) _policy_config(policy) _rules_config(rules) _routestopped_config(routestopped) with settings(hide('running')): sed('/etc/default/shorewall', 'startup=0', 'startup=1', use_sudo=True)
def firewall(zones=None, interfaces=None, policy=None, rules=None, routestopped=None, masq=None): """ Ensure that a firewall is configured. Example:: from fabtools.shorewall import * from fabtools import require # We need a firewall with some custom rules require.shorewall.firewall( rules=[ Ping(), SSH(), HTTP(), HTTPS(), SMTP(), rule(port=1234, source=hosts(['example.com'])), ] ) """ package('shorewall') with watch(CONFIG_FILES) as config: _zone_config(zones) _interfaces_config(interfaces) _policy_config(policy) _rules_config(rules) _routestopped_config(routestopped) _masq_config(masq) if config.changed: puts("Shorewall configuration changed") if is_started(): restart('shorewall') with settings(hide('running')): sed('/etc/default/shorewall', 'startup=0', 'startup=1', use_sudo=True)
def server(version=None): """ Require a PostgreSQL server to be installed and running. :: from fabtools import require require.postgres.server() """ if distrib_family() == "arch": pkg_name = 'postgresql' arch.package(pkg_name) init_postgres() else: if version: pkg_name = 'postgresql-%s' % version else: pkg_name = 'postgresql' package(pkg_name) started(_service_name(version))
def nginx_install(): 'Install nginx' deb.package('nginx-full') if exists('/etc/nginx/sites-enabled/default'): run('rm /etc/nginx/sites-enabled/default')
def server(): """ Require an nginx server """ package('nginx') started('nginx')
def server(): package('apache2') started('apache2')
def uwsgi_install(): 'Install uWSGI from unstable' for pkg in ['uwsgi', 'uwsgi-plugin-python', 'uwsgi-plugin-python3']: if not deb.is_installed(pkg): deb.package(pkg + '/unstable')
def mysql_install(): deb.package('mariadb-server')