Esempio 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)
Esempio 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)
Esempio 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')
Esempio 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')
Esempio 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")
Esempio 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')
Esempio 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)
Esempio 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)
Esempio 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')
Esempio 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')
Esempio n. 11
0
def server():
    """
    Require apache2 server to be installed and running.

    ::

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

    ::

        from fabtools import require

        require.nginx.server()
    """
    package('nginx')
    started('nginx')
Esempio 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')
Esempio 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')
Esempio 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')
Esempio 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')
Esempio 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')
Esempio 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')
Esempio 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')
Esempio 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')
Esempio 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')
Esempio 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))
Esempio 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))
Esempio 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')
Esempio 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)
Esempio 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)
Esempio 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)
Esempio 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)
Esempio 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))
Esempio 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')
Esempio n. 33
0
def server():
    """
    Require an nginx server
    """
    package('nginx')
    started('nginx')
Esempio n. 34
0
def server():
    package('apache2')
    started('apache2')
Esempio 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')
Esempio n. 36
0
def server():
    """
    Require an nginx server
    """
    package('nginx')
    started('nginx')
Esempio n. 37
0
def mysql_install():
    deb.package('mariadb-server')