Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
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')
Exemplo n.º 4
0
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')
Exemplo n.º 5
0
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")
Exemplo n.º 6
0
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')
Exemplo n.º 7
0
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)
Exemplo n.º 8
0
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)
Exemplo n.º 9
0
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')
Exemplo n.º 10
0
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')
Exemplo n.º 11
0
def server():
    """
    Require apache2 server to be installed and running.

    ::

        from fabtools import require
        require.apache2.server()
    """
    package("apache2")
    started("apache2")
Exemplo n.º 12
0
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')
Exemplo n.º 13
0
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)
Exemplo n.º 14
0
def server():
    """
    Require nginx server to be installed and running.

    ::

        from fabtools import require

        require.nginx.server()
    """
    package('nginx')
    started('nginx')
Exemplo n.º 15
0
def server():
    """
    Require apache2 server to be installed and running.

    ::

        from fabtools import require

        require.apache.server()
    """
    package('apache2')
    require_started('apache2')
Exemplo n.º 16
0
def server():
    """
    Require nginx server to be installed and running.

    ::

        from fabtools import require

        require.nginx.server()
    """
    package('nginx')
    require_started('nginx')
Exemplo n.º 17
0
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')
Exemplo n.º 18
0
def server():
    """
    Require the Apache HTTP server to be installed and running.

    ::

        from fabtools import require

        require.apache.server()

    """
    package('apache2')
    require_started('apache2')
Exemplo n.º 19
0
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')
Exemplo n.º 20
0
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')
Exemplo n.º 21
0
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')
Exemplo n.º 22
0
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')
Exemplo n.º 23
0
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')
Exemplo n.º 24
0
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))
Exemplo n.º 25
0
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))
Exemplo n.º 26
0
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')
Exemplo n.º 27
0
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)
Exemplo n.º 28
0
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)
Exemplo n.º 29
0
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)
Exemplo n.º 30
0
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)
Exemplo n.º 31
0
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))
Exemplo n.º 32
0
def nginx_install():
    'Install nginx'
    deb.package('nginx-full')
    if exists('/etc/nginx/sites-enabled/default'):
        run('rm /etc/nginx/sites-enabled/default')
Exemplo n.º 33
0
def server():
    """
    Require an nginx server
    """
    package('nginx')
    started('nginx')
Exemplo n.º 34
0
def server():
    package('apache2')
    started('apache2')
Exemplo n.º 35
0
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')
Exemplo n.º 36
0
def server():
    """
    Require an nginx server
    """
    package('nginx')
    started('nginx')
Exemplo n.º 37
0
def mysql_install():
    deb.package('mariadb-server')