def server_setup():
    # Set kernel options
    with warn_only():
        sysctl('vm.swappiness', 0)

    # Basic system configuration
    file_update('/etc/sysconfig/clock', 'ZONE=', 'ZONE="America/Chicago"')
    sudo('cp -f /usr/share/zoneinfo/America/Chicago /etc/localtime')

    # Perform updates and installs
    yum.update()
    yum.install('yum-utils', 'ntp', 'ntpdate', 'uuid', 'zsh', 'screen', 'tmux',
                'vim-enhanced', 'git', 'subversion',
                'bind-utils', 'telnet', 'traceroute',
                'curl', 'wget')

    # Performs a quick time sync so all logs are accurate
    with warn_only():
        service.enable('ntpd')
        service.stop('ntpd')
        sudo('ntpdate time.nist.gov')
        sudo('ntpdate tick.usno.navy.mil')
        service.start('ntpd')

    # Add custom repos for nginx, more up-to-date PHP and MySQL packages,
    # and a few additional PHP modules
    with warn_only():
        yum.add_epel_repo()
        for repo_name, repo_rpm_url in REPO_RPMS.iteritems():
            yum.add_repo_rpm(repo_rpm_url)
            yum.enable_repo(repo_name)
def bootstrap():
    # Set kernel options
    print(blue('Setting sysctl options...'))
    with warn_only():
        sysctl('vm.swappiness', 0)

    # Basic system configuration
    print(blue('Tweaking configuration...'))
    file_update('/etc/sysconfig/clock', 'ZONE=', 'ZONE="America/Chicago"')
    run('cp -f /usr/share/zoneinfo/America/Chicago /etc/localtime')

    # Update existing packages
    print(blue('Updating installed packages...'))
    yum.update()

    # Install base packages and dev tools
    print(blue('Installing base packages and development tools...'))
    yum.install('yum-utils', 'ntp', 'ntpdate',
                'vim-enhanced', 'git', 'subversion',
                'bind-utils', 'telnet', 'traceroute', 'curl', 'wget',
                'rpm-build', 'rpmdevtools', 'spectool')
    yum.install_group('Development Tools')

    # Perform a quick time sync -- particularly good for VMs
    print(blue('Synchronizing system time...'))
    with warn_only():
        service.stop('ntpd')
        run('ntpdate time.nist.gov')
        run('ntpdate tick.usno.navy.mil')
        service.start('ntpd')
        service.enable('ntpd')

    # Set up build user and their unprivileged environment
    print(blue('Creating %s user and pushing SSH key...' % build_user))
    with warn_only():
        sudo('useradd -m %s' % build_user)
        keys.push_key(user_name=build_user)
        sudo('chown -R %s.%s ~%s/.ssh' % (build_user, build_user, build_user))

    print(blue('Setting up rpmbuild environment...'))
    with settings(user=build_user, warn_only=True):
        run('rpmdev-setuptree')
        run('git clone %s' % sysfm_repo)

    # Huzzah!
    print(green('CentOS build instance ready!'))
def mysql_setup():
    # Enable, start, and clean MySQL up
    apt.install('mysql-client', 'mysql-server')
    service.enable('mysqld')
    service.start('mysqld')

    # Run the same queries performed by mysql_secure_installation
    queries = [
        "DELETE FROM mysql.user WHERE User='';",
        "DELETE FROM mysql.user WHERE User='******' "
        "AND Host NOT IN ('localhost', '127.0.0.1', '::1');",
        "DROP DATABASE test;",
        "DELETE FROM mysql.db WHERE Db='test' OR Db='test\_%';",
        "FLUSH PRIVILEGES;",
    ]

    with warn_only():
        for query in queries:
            run('mysql -u root -e "%s"' % query)
def server_setup():
    # Set kernel options
    with warn_only():
        sysctl('vm.swappiness', 0)

    # Perform updates and installs
    apt.configure()
    apt.upgrade()
    apt.install('software-properties-common', 'ntp', 'uuid', 'zsh', 'screen',
                'tmux', 'vim', 'git', 'subversion',
                'telnet', 'traceroute',
                'curl', 'wget')

    # Performs a quick time sync so all logs are accurate
    with warn_only():
        service.stop('ntp')
        sudo('ntpdate time.nist.gov')
        sudo('ntpdate tick.usno.navy.mil')
        service.start('ntp')
        service.enable('ntp')
def redis_setup():
    apt.install('redis-server')
    service.enable('redis')
    service.start('redis')
def memcache_setup():
    apt.install('memcached')
    service.enable('memcached')
    service.start('memcached')
def nginx_setup():
    apt.install('nginx')
    service.enable('nginx')
    service.start('nginx')
def redis_setup():
    yum.install('redis', 'hiredis')
    service.enable('redis')
    service.start('redis')