Source code for fabtools.require.mysql

"""
MySQL
=====

This module provides high-level tools for installing a MySQL server
and creating MySQL users and databases.

"""
from __future__ import with_statement

from fabric.api import hide, settings

from fabtools.deb import is_installed, preseed_package
from fabtools.mysql import (
    create_database,
    create_user,
    database_exists,
    prompt_password,
    user_exists,
)
from fabtools.require.deb import package
from fabtools.require.service import started


[docs]def server(version=None, password=None): """ Require a MySQL server to be installed and running. Example:: from fabtools import require require.mysql.server(password='s3cr3t') """ 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')
[docs]def user(name, password, **kwargs): """ Require a MySQL user. Extra arguments will be passed to :py:func:`fabtools.mysql.create_user`. Example:: from fabric.api import settings from fabtools import require with settings(mysql_user='root', mysql_password='s3cr3t'): require.mysql.user('dbuser', 'somerandomstring') """ if not user_exists(name, **kwargs): create_user(name, password, **kwargs)
[docs]def database(name, **kwargs): """ Require a MySQL database. Extra arguments will be passed to :py:func:`fabtools.mysql.create_database`. Example:: from fabric.api import settings from fabtools import require with settings(mysql_user='root', mysql_password='s3cr3t'): require.mysql.database('myapp', owner='dbuser') """ if not database_exists(name, **kwargs): create_database(name, **kwargs)

Project Versions

This Page