Beispiel #1
0
def setup_packages():
    puts(green('Installing Packages'))

    sudo ("rm -rf /var/www")
    sudo ("ln -fs $HOME /var/www")

    # rbenv
    run('git clone https://github.com/sstephenson/rbenv.git ~/.rbenv');
    run('git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build');
    run('echo \'export PATH="$HOME/.rbenv/bin:$PATH"\' >> ~/.bash_profile');
    run('echo \'eval "$(rbenv init -)"\' >> ~/.bash_profile');
    run('source ~/.bash_profile');

    # ruby
    run('rbenv install 2.1.0');
    run('rbenv global 2.1.0');

    # rails
    run('echo \'install: --no-rdoc --no-ri\' >> ~/.gemrc');
    run('echo \'update : --no-rdoc --no-ri\' >> ~/.gemrc');

    run('gem install rubygems-update')
    run('update_rubygems')

    run('gem install rails --version 4.2.0')

    # other
    cuisine.package_ensure('mysql-server-5.5')
    cuisine.package_ensure('redis-server')

    # nvm
    run("git clone https://github.com/creationix/nvm.git ~/.nvm")
Beispiel #2
0
def stage7_midonet_tunnelzone_members():
    metadata = Config(os.environ["CONFIGFILE"])

    if cuisine.file_exists("/tmp/.%s.lck" % sys._getframe().f_code.co_name):
        return

    cuisine.package_ensure("expect")

    for container_role in ['container_midonet_gateway', 'container_openstack_compute', 'container_openstack_neutron']:
        if container_role in metadata.roles:
            for container in metadata.containers:
                if container in metadata.roles[container_role]:
                    puts(green("adding container %s as member to tunnel zones" % container))
                    add_host_to_tunnel_zone(metadata.config["debug"], container, metadata.containers[container]["ip"])

    for physical_role in ['physical_midonet_gateway', 'physical_openstack_compute']:
        if physical_role in metadata.roles:
            for server in metadata.servers:
                if server in metadata.roles[physical_role]:
                    puts(green("adding server %s as member to tunnel zones" % server))

                    #
                    # tinc can only work with MTU 1500
                    # we could use the approach from http://lartc.org/howto/lartc.cookbook.mtu-mss.html
                    # but instead we will disable rp_filter and use the physical interface ip
                    #
                    # server_ip = "%s.%s" % (metadata.config["vpn_base"], metadata.config["idx"][server])
                    #

                    server_ip = metadata.servers[server]["ip"]
                    add_host_to_tunnel_zone(metadata.config["debug"], server, server_ip)

    cuisine.file_write("/tmp/.%s.lck" % sys._getframe().f_code.co_name, "xoxo")
def add_nrpe_port():
    '''
    Configures settings to permit incoming NRPE connections on port 5666.
    '''
    cuisine.package_ensure('xinetd')
    sudo('echo "nrpe 5666/tcp" >> /etc/services')
    sudo('iptables -A INPUT -p tcp --dport 5666 -j ACCEPT')
    def apply(self, computer):
        cuisine.package_ensure('shorewall')
        cuisine.package_ensure('shorewall-doc')

        self.push_package_file_set('shorewall', computer)

        cuisine.sudo("service shorewall restart")
Beispiel #5
0
def install_python(version, force=False):
    """Install python"""

    package_ensure('build-essential')
    package_ensure('libcurl4-openssl-dev')

    install_dir = os.path.join(_INSTALL_DIR, 'python', version)
    python_bin = os.path.join(install_dir, 'bin', 'python')

    if file_exists(python_bin):
        if not force:
            puts("Python {0} found, skipping installation".format(version))
            return
        else:
            puts("Reinstalling Python {0} found".format(version))

    src_dir = run('mktemp -d')
    with cd(src_dir):
        puts("Downloading python {0}".format(version))
        run("wget -q '%s' -O - | tar xz" % PYTHON_DOWNLOAD_URL.format(version=version))
        with cd('Python-{0}'.format(version)):
            puts("Installing python {0}".format(version))
            run("./configure --prefix=%s" % install_dir)
            run("make")
            sudo('make install')
    run('rm -rf {0}'.format(src_dir))
def __configure_ubuntu_packages(root_pass="******"):
    """Configure mysql ubuntu packages"""
    sudo("echo mysql-server-5.5 mysql-server/root_password password %s" " | debconf-set-selections" % root_pass)
    sudo("echo mysql-server-5.5 mysql-server/root_password_again password %s" " | debconf-set-selections" % root_pass)
    sudo("echo mysql-server-5.5 mysql-server/start_on_boot boolean true" " | debconf-set-selections")
    package_ensure("mysql-server")
    package_ensure("python-mysqldb")
def configure_chargeback(mysql_chargeback_username='******',
              mysql_chargeback_password='******',
              mysql_chargeback_host='localhost',
              mysql_chargeback_port='3306',
              mysql_chargeback_schema='chargeback',
              mysql_activity_schema='activity',
              mysql_chargeback_root_password='******',
              service_chargeback_user='******',
              service_chargeback_password='******',
              admin_token='stackops',
              auth_host='127.0.0.1',
              auth_port='35357',
              auth_protocol='http',
              auth_uri='/v2.0'):
    """Generate chargeback configuration. Execute on both servers"""
    sudo('echo stackops-chargeback stackops-chargeback/mysql-usr string %s | debconf-set-selections' % mysql_chargeback_username)
    sudo('echo stackops-chargeback stackops-chargeback/mysql-password password %s | debconf-set-selections' % mysql_chargeback_password)
    sudo('echo stackops-chargeback stackops-chargeback/mysql-schema string %s | debconf-set-selections' % mysql_chargeback_schema)
    sudo('echo stackops-chargeback stackops-chargeback/mysql-activity-schema string %s | debconf-set-selections' % mysql_activity_schema)
    sudo('echo stackops-chargeback stackops-chargeback/mysql-host string %s | debconf-set-selections' % mysql_chargeback_host)
    sudo('echo stackops-chargeback stackops-chargeback/mysql-port string %s | debconf-set-selections' % mysql_chargeback_port)
    sudo('echo stackops-chargeback stackops-chargeback/mysql-admin-password password %s | debconf-set-selections' % mysql_chargeback_root_password)
    sudo('echo stackops-chargeback stackops-chargeback/mysql-purgedb boolean true | debconf-set-selections')
    sudo('echo stackops-chargeback stackops-chargeback/present-stackops-license boolean true | debconf-set-selections')
    sudo('echo stackops-chargeback stackops-chargeback/keystone-usr string %s | debconf-set-selections' % service_chargeback_user)
    sudo('echo stackops-chargeback stackops-chargeback/keystone-password password %s | debconf-set-selections' % service_chargeback_password)
    sudo('echo stackops-chargeback stackops-chargeback/keystone-url string %s://%s:%s%s | debconf-set-selections' % (auth_protocol,auth_host,auth_port,auth_uri))
    sudo('echo stackops-chargeback stackops-chargeback/keystone-admin-token string %s | debconf-set-selections' % admin_token)
    package_ensure('stackops-chargeback')
Beispiel #8
0
def _extra_packages():
    """
    Install extra utils packages.
    """
    print blue("Installing extra packages.")
    cuisine.package_ensure('tree')
    cuisine.package_ensure('figlet')
Beispiel #9
0
def php():

    cuisine.package_ensure([
        'php5',
        'php5-cli',
        'php5-curl',
        'php5-dev',
        'php5-gd',
        'php5-imap',       
        'php5-memcached',
        'php5-mcrypt',
        'php5-mysqlnd',
        'php5-sqlite', 
        'php5-tidy',
        'php5-xdebug',
        'php5-xmlrpc',
        'php5-xsl'
    ])
    if not cuisine.file_exists('/etc/php5/conf.d/custom.ini'):
        custom = 'date.timezone = "Europe/Paris"\n \
        error_reporting = E_ALL\n \
        display_errors = On\n \
        display_startup_errors = On\n \
        short_open_tag = Off'
        cuisine.file_write('/etc/php5/conf.d/custom.ini', custom, 644, 'root', 'root')
    
    if not package_installed('php-pear'):
        cuisine.package_ensure('php-pear')
        cuisine.run('pear channel-update pear.php.net')
        cuisine.run('pear upgrade pear')
    if package_installed('php5-suhosin'):
        cuisine.run('apt-get purge php5-suhosin -y')
Beispiel #10
0
    def cloud_repository(self):
        run("rm -rf /etc/apt/sources.list.d/cloudarchive-*")

        cuisine.package_ensure(["python-software-properties", "software-properties-common", "ubuntu-cloud-keyring"])

        self.dist_upgrade()

        if self._metadata.config["container_os_release_codename"] == "precise":
            if self._metadata.config["openstack_release"] in ["icehouse", "juno"]:
                run("add-apt-repository --yes cloud-archive:%s" % self._metadata.config["openstack_release"])

        if self._metadata.config["container_os_release_codename"] == "trusty":
            if self._metadata.config["openstack_release"] in ["juno", "kilo"]:
                run("add-apt-repository --yes cloud-archive:%s" % self._metadata.config["openstack_release"])

        run("""
OPENSTACK_RELEASE="%s"
APT_CACHER="%s"

SOURCES_LIST="/etc/apt/sources.list.d/cloudarchive-${OPENSTACK_RELEASE}.list"

test -f "${SOURCES_LIST}" && \
    sed -i 's,http://ubuntu-cloud.archive.canonical.com,'"${APT_CACHER}"'/ubuntu-cloud.archive.canonical.com,g;' "${SOURCES_LIST}"

exit 0

""" % (
        self._metadata.config["openstack_release"],
        self._metadata.config["apt-cacher"]
    ))

        self.dist_upgrade()
Beispiel #11
0
def setup_packages():
    cuisine.select_package('apt')
    puts(green('Installing Ubuntu packages'))
    with cuisine.mode_sudo():
        cuisine.package_update()
        cuisine.package_upgrade()
        cuisine.package_ensure([
            "aptitude",
            "build-essential",
            "curl",
            "git",
            "guake",
            "haskell-platform",
            "htop",
            "ibux-mozc",
            "libclang-dev",
            'libncursesw5-dev',
            "libssl-dev",
            "paco",
            "python3-dev",
            "tmux",
            "tree",
            "wget",
            "zip",
            "zsh",
            ])
Beispiel #12
0
    def install_gunicorn(self):
        self.run_virtualenv('pip -q install gunicorn')

        with mode_sudo():
            dir_ensure('/var/log/gunicorn/',
                owner=self.user_name,
                group=self.group_name,
                )

        if self.util.get_package_manager() == 'apt':
            operations.put(
                'gunicorn.conf', 
                '/etc/init/', 
                use_sudo=True, mode=644)
            with mode_sudo():
                file_attribs('/etc/init/gunicorn.conf',
                    mode=700,
                    owner='root',
                    group='root',
                    )
                with settings(warn_only=True):
                    sed('/etc/init/gunicorn.conf', 
                        '\{virtualenv\}', 
                        self.virtualenv_dir,
                        use_sudo = True,
                        )

        operations.put(
            'gunicorn-launcher.sh', 
            self.virtualenv_dir + '/bin/', 
            use_sudo=True, mode=750)
        with mode_sudo():
            file_attribs(self.virtualenv_dir + '/bin/gunicorn-launcher.sh',
                mode=700,
                owner=self.user_name,
                group=self.group_name,
                )
            with settings(warn_only=True):
                sed(self.virtualenv_dir + '/bin/gunicorn-launcher.sh', 
                    '\{virtualenv\}', 
                    self.virtualenv_dir,
                    use_sudo = True,
                    )
                sed(self.virtualenv_dir + '/bin/gunicorn-launcher.sh', 
                    '\{project\}', 
                    self.www_dir,
                    use_sudo = True,
                    )


        # install gevent. This is non-critical and might fail so we go to
        # warn-only mode 
        with settings(warn_only=True):
            package_ensure('libevent-dev')
            self.run_virtualenv('pip -q install gevent')
        
        #   # TODO: add -k gevent to gunicorn launcher script

        # TODO
        upstart_ensure('gunicorn')
def configure_activity(mysql_activity_username='******',
                       mysql_activity_password='******',
                       mysql_activity_host='localhost',
                       mysql_activity_port='3306',
                       mysql_activity_schema='activity',
                       mysql_activity_root_password='******',
                       service_activity_user='******',
                       service_activity_pass='******',
                       rabbit_username='******',
                       rabbit_password='******',
                       rabbit_host='localhost',
                       rabbit_port='5672',
                       admin_token='password',
                       auth_host='127.0.0.1',
                       auth_port='35357',
                       auth_protocol='http',
                       auth_uri='/v2.0',
                       license_token="SUhIsoHOLNFjt6Drz7W26NrNs"):
    """Generate activity configuration. Execute on both servers"""
    sudo('echo stackops-activity stackops-activity/mysql-usr string '
         '%s | debconf-set-selections' % mysql_activity_username)
    sudo('echo stackops-activity stackops-activity/mysql-password password %s '
         '| debconf-set-selections' % mysql_activity_password)
    sudo('echo stackops-activity stackops-activity/mysql-schema string %s '
         '| debconf-set-selections' % mysql_activity_schema)
    sudo('echo stackops-activity stackops-activity/mysql-host string %s '
         '| debconf-set-selections' % mysql_activity_host)
    sudo('echo stackops-activity stackops-activity/mysql-port string %s '
         '| debconf-set-selections' % mysql_activity_port)
    sudo('echo stackops-activity stackops-activity/mysql-admin-password '
         'password %s | debconf-set-selections' % mysql_activity_root_password)
    sudo('echo stackops-activity stackops-activity/mysql-purgedb boolean true '
         '| debconf-set-selections')
    sudo('echo stackops-activity stackops-activity/present-stackops-license '
         'boolean true | debconf-set-selections')
    sudo('echo stackops-activity stackops-activity/rabbit-usr string %s '
         '| debconf-set-selections' % rabbit_username)
    sudo('echo stackops-activity stackops-activity/rabbit-password password '
         '%s | debconf-set-selections' % rabbit_password)
    sudo('echo stackops-activity stackops-activity/rabbit-host string %s '
         '| debconf-set-selections' % rabbit_host)
    sudo('echo stackops-activity stackops-activity/rabbit-port string %s '
         '| debconf-set-selections' % rabbit_port)
    sudo('echo stackops-activity stackops-activity/keystone-usr string %s '
         '| debconf-set-selections' % service_activity_user)
    sudo('echo stackops-activity stackops-activity/keystone-password password '
         '%s | debconf-set-selections' % service_activity_pass)
    sudo('echo stackops-activity stackops-activity/keystone-url string '
         '%s://%s:%s%s | debconf-set-selections' % (auth_protocol,
                                                    auth_host,
                                                    auth_port, auth_uri))
    sudo('echo stackops-activity stackops-activity/keystone-admin-token '
         'string %s | debconf-set-selections' % admin_token)
    package_ensure('stackops-activity')
    sudo('''mysql -h%s -u%s --password=%s %s -e "UPDATE
    ACT_SETTINGS SET PROPERTY_VALUE='%s' WHERE
    PROPERTY_KEE='license.manager.token';"''' %
         (mysql_activity_host, mysql_activity_username,
          mysql_activity_password, mysql_activity_schema, license_token))
    package_ensure('stackops-activity-portal-plugin')
Beispiel #14
0
def postgresql_ensure(name, username, path, db_password, venv_path='.venv'):
    with virtualenv(path, venv_path):
        package_ensure('postgresql postgresql-contrib libpq-dev')
        python_package_ensure('psycopg2')
    postgresql_role_ensure(username, db_password, createdb=True)
    postgresql_database_ensure(name, owner=username,
        locale='en_US.utf8', template='template0', encoding='UTF8')
Beispiel #15
0
def tilde():
    # Set up authorization to back up
    public_key = ssh.ensure_key('/var/local/germinate-backup', use_sudo=True)
    with settings(user='******', host_string='germinate'):
        files.append('/home/xenu-linux/.ssh/authorized_keys',
                     public_key,
                     use_sudo=True)
    sudo("mkdir -p /root/.ssh")
    util.put_file("config/backup/sshconfig-xenu",
                  "/root/.ssh/config",
                  user='******')

    # Set up backup
    package_ensure(["rsync"])
    util.put_file("config/backup/generic-backup.sh",
                  "/var/local/generic-backup.sh",
                  mode='755',
                  user='******')
    util.put_file("config/backup/backup-exclude-tilde",
                  "/var/local/backup-exclude",
                  mode='644',
                  user='******')
    util.put_file("config/backup/backup-tilde.sh",
                  "/etc/cron.daily/backup",
                  mode='755',
                  user='******')
def setup_os():
	with cuisine.mode_sudo():
		cuisine.ssh_authorize( "matze" , cuisine.file_local_read("./cuisine_id.pub"))
		for _ in PACKAGE_ENSURE: cuisine.package_ensure(_)
		cuisine.run("a2enmod rewrite")
		# TODO enable   AllowOverride none => all for /var/www
		cuisine.run("service apache2 restart")
def add_nrpe_port():
    '''
    Configures settings to permit incoming NRPE connections on port 5666.
    '''
    cuisine.package_ensure('xinetd')
    sudo('echo "nrpe 5666/tcp" >> /etc/services')
    sudo('iptables -A INPUT -p tcp --dport 5666 -j ACCEPT')
Beispiel #18
0
def setup_devtools():
    puts(green('Installing Devtools'))
    packages = '''
        vim curl wget build-essential tmux screen zsh make sqlite3 tig tree locate git-core python-software-properties unzip
        '''.split()

    for pkg in packages:
        cuisine.package_ensure(pkg)
Beispiel #19
0
def setup_devtools():
    puts(green('Installing Devtools'))
    packages = '''
        vim curl wget build-essential tmux screen zsh make sqlite3 tig tree locate git-core python-software-properties libsqlite3-dev jq libmysqlclient15-dev
        '''.split()

    for pkg in packages:
        cuisine.package_ensure(pkg)
Beispiel #20
0
def solr_ensure(project_path, venv_path='.venv'):
    with mode_sudo():
        package_ensure('openjdk-7-jdk libxml2-dev libxslt1-dev python-dev')
        dir_ensure('/usr/java')
        file_link('/usr/lib/jvm/java-7-openjdk-amd64', '/usr/java/default')
        package_ensure('solr-tomcat')
    with virtualenv(project_path, venv_path):
        python_package_ensure('pysolr lxml cssselect')
Beispiel #21
0
def sudo_ensure():
    """Ensure the 'sudo' command is installed"""
    select_package("apt")
    with mode_user():
        # The below works but is too slow
        # run("apt-get update")
        # run("apt-get install sudo")
        package_ensure(["sudo"])  # No idea why this didn't work
Beispiel #22
0
def update_git():
    current_version=run('git --version | cut -d" " -f3')
    if current_version == GIT_VERSION:
        return
    package_remove("git")
    if CENTOS=True:
        for git_dependency in git_dependencies:
            package_ensure(CENTOS_GIT_DEPENDENCIES)
Beispiel #23
0
def sudo_ensure():
    """Ensure the 'sudo' command is installed"""
    select_package("apt")
    with mode_user():
        # The below works but is too slow
        #run("apt-get update")
        #run("apt-get install sudo")
        package_ensure(["sudo"])  # No idea why this didn't work
Beispiel #24
0
def virtualenv_ensure(project_path, venv_path='.venv', packages_file='requirements.txt', restart=False):
    package_ensure('python-dev python-pip python-virtualenv')
    with virtualenv(project_path, venv_path):
        dir_ensure('downloads')
        if restart:
            run('rm -rf %s' % venv_path)
        if not dir_exists(venv_path):
            run('virtualenv --no-site-packages --distribute %s' % venv_path)
        run('pip install --download-cache downloads -r ' + packages_file)
Beispiel #25
0
    def apply(self, computer):
        cuisine.package_ensure('nginx-extras')

        cuisine.dir_ensure('/srv/www/', mode='755')

        tmp_env = {"name": computer}
        self.push_package_file_set('nginx', computer, tmp_env)

        cuisine.sudo("service nginx restart")
Beispiel #26
0
def mongodb_ensure():
    with mode_sudo():
        if not run("cat /etc/apt/sources.list | grep '%s'" % (MONGO_REPO),
                   warn_only=True).succeeded:
            run("apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10"
                )
            run("add-apt-repository '%s'" % (MONGO_REPO))
            package_update()
        package_ensure("mongodb-org")
Beispiel #27
0
def jenkins():
    _update_git()
    _openjdk()
    _get_repo()
    package_ensure("jenkins")
    nginx()
    with shell_env():
        sudo("/etc/init.d/jenkins start")
        sudo("chkconfig jenkins on")
Beispiel #28
0
def _setup_ubuntu():
    """
    Update packages and install basic packages.
    """
    print blue("Updating System")
    sudo('apt-get update', quiet=True)
    print blue("Installing Basic Packages")
    cuisine.package_ensure('build-essential')
    cuisine.package_ensure('git-core')
Beispiel #29
0
def install_python_dev():
    '''
    Install python development libraries
    '''
    family = distro_family()
    if family == 'debian':
        package_ensure('python-dev')
    elif family == 'redhat':
        package_ensure('python-devel')
def install_prerequisites():
    '''
    Installs prerequisites for running Nagios on VM.
    '''
    cuisine.package_ensure('apache2')
    cuisine.package_ensure('libapache2-mod-php5')
    cuisine.package_ensure('build-essential')
    cuisine.package_ensure('libgd2-xpm-dev')
    cuisine.package_ensure('libssl-dev')
Beispiel #31
0
def install_prerequisites():
    '''
    Installs prerequisites for running Nagios on VM.
    '''
    cuisine.package_ensure('apache2')
    cuisine.package_ensure('libapache2-mod-php5')
    cuisine.package_ensure('build-essential')
    cuisine.package_ensure('libgd2-xpm-dev')
    cuisine.package_ensure('libssl-dev')
Beispiel #32
0
def _setup_percona_repository():
    # https://www.percona.com/doc/percona-server/5.7/installation/apt_repo.html
    cuisine.package_ensure('wget')

    if not cuisine.file_exists('/etc/apt/sources.list.d/percona-ps-80-release.list'):
        run('wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb')
        sudo('dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb')
        run('rm percona-release_latest.$(lsb_release -sc)_all.deb')
        sudo('percona-release setup ps80')
Beispiel #33
0
def _install_scala_and_sbt():
    cuisine.package_ensure('openjdk-7-jdk')
    run("wget http://www.scala-lang.org/files/archive/scala-2.11.2.deb")
    run("wget http://dl.bintray.com/sbt/debian/sbt-0.13.6.deb")
    sudo("dpkg -i scala-2.11.2.deb")
    sudo("dpkg -i sbt-0.13.5.deb")
    sudo("apt-get update")
    sudo("apt-get install scala")
    sudo("apt-get install sbt")
Beispiel #34
0
def install(cluster=False):
    """Generate neutron configuration. Execute on both servers"""
    """Configure openvwsitch and neutron packages"""
    package_ensure('python-amqp')
    package_ensure('neutron-server')
    package_ensure('neutron-plugin-openvswitch')
    package_ensure('python-pyparsing')
    package_ensure('python-mysqldb')
    if cluster:
        stop()
Beispiel #35
0
def gunicorn_supervisor_ensure(project_path, project_name, template, key_env):
    with mode_sudo(), cd(project_path):
        config = '/etc/supervisor/conf.d/%s.conf' % project_name
        package_ensure('supervisor')
        python_package_ensure('setproctitle')
        run("cp %s %s" % (template, config))
        file_update(config, lambda x: text_template(x,key_env))
        run("supervisorctl reread")
        run("supervisorctl update")
        run("supervisorctl restart %s" % (project_name))
def __configure_ubuntu_packages(root_pass='******'):
    """Configure mysql ubuntu packages"""
    sudo('echo mysql-server-5.5 mysql-server/root_password password %s'
         ' | debconf-set-selections' % root_pass)
    sudo('echo mysql-server-5.5 mysql-server/root_password_again password %s'
         ' | debconf-set-selections' % root_pass)
    sudo('echo mysql-server-5.5 mysql-server/start_on_boot boolean true'
         ' | debconf-set-selections')
    package_ensure('mysql-server')
    package_ensure('python-mysqldb')
Beispiel #37
0
def setup_ghost_dev():
    cuisine.package_ensure("ruby")
    cuisine.package_ensure("rubygems")
    sudo("gem install bundler")
    sudo("gem install sass")
    sudo("gem install bourbon")
    sudo("npm install -g grunt-cli")
    with cd("~/data/apps/ghost"):
        run("grunt init")
        run("grunt prod")
Beispiel #38
0
def setup_ghost_dev():
    cuisine.package_ensure("ruby")
    cuisine.package_ensure("rubygems")
    sudo("gem install bundler")
    sudo("gem install sass")
    sudo("gem install bourbon")
    sudo("npm install -g grunt-cli")
    with cd("~/data/apps/ghost"):
        run("grunt init")
        run("grunt prod")
Beispiel #39
0
Datei: mx.py Projekt: za3k/devops
def _dovecot(database_password):
    select_package("apt")
    package_ensure(["dovecot-imapd", "dovecot-lmtpd", "dovecot-pgsql", "dovecot-sieve", "dovecot-managesieved"]) # On debian will automatically be enabled
    crypto.put_cert('config/certs/imap.za3k.com.pem')
    crypto.put_key('config/keys/imap.za3k.com.key')
    put('config/dovecot/dovecot.conf', '/etc/dovecot/dovecot.conf', mode='644')
    put('config/dovecot/dovecot-sql.conf', '/etc/dovecot/dovecot-sql.conf', mode='600')
    _replace('/etc/dovecot/dovecot-sql.conf', 'DOVECOT_DATABASE_PASSWORD', database_password)
    dir_ensure("/etc/dovecot/sieve.d")
    run("chown vmail:vmail /etc/dovecot/sieve.d")
def __configure_ubuntu_packages(root_pass='******'):
    """Configure mysql ubuntu packages"""
    sudo('echo mysql-server-5.5 mysql-server/root_password password %s'
         ' | debconf-set-selections' % root_pass)
    sudo('echo mysql-server-5.5 mysql-server/root_password_again password %s'
         ' | debconf-set-selections' % root_pass)
    sudo('echo mysql-server-5.5 mysql-server/start_on_boot boolean true'
         ' | debconf-set-selections')
    package_ensure('mysql-server')
    package_ensure('python-mysqldb')
Beispiel #41
0
def postgresql_ensure(name, username, path, db_password, venv_path='.venv'):
    package_ensure('postgresql postgresql-contrib libpq-dev')
    with virtualenv(path, venv_path):
        python_package_ensure('psycopg2')
    postgresql_role_ensure(username, db_password, createdb=True)
    postgresql_database_ensure(name,
                               owner=username,
                               locale='en_US.utf8',
                               template='template0',
                               encoding='UTF8')
Beispiel #42
0
def nginx_ensure(name, template):
	with mode_sudo():
	    package_ensure('nginx') 
	    run("cp %s /etc/nginx/sites-available/%s" % (template, name))
	    file_update('/etc/nginx/sites-available/%s' % name, lambda x: text_template(x,env))
	    if not file_exists("/etc/nginx/sites-enabled/%s" % name):
	        run("ln -s -t /etc/nginx/sites-enabled /etc/nginx/sites-available/%s " % (
	            env.project_name))
	    file_unlink('/etc/nginx/sites-enabled/default')
	    run("service nginx restart")
Beispiel #43
0
def virtualenv_ensure(project_path, venv_path='.venv', packages_file='requirements.txt', restart=False):
    package_ensure('python-dev python-pip python-virtualenv')
    with cd(project_path):
        dir_ensure('downloads')
        if restart:
            run('rm -rf %s' % venv_path)
        if not dir_exists(venv_path):
            run('virtualenv --no-site-packages --distribute %s' % venv_path)
    with virtualenv(project_path, venv_path):
        run('pip install --download-cache downloads -r ' + packages_file)
def install(cluster=False):
    """Generate neutron configuration. Execute on both servers"""
    """Configure openvwsitch and neutron packages"""
    package_ensure('python-amqp')
    package_ensure('neutron-server')
    package_ensure('neutron-plugin-openvswitch')
    package_ensure('python-pyparsing')
    package_ensure('python-mysqldb')
    if cluster:
        stop()
Beispiel #45
0
def _setup_kataribe():
    cuisine.package_ensure('wget')
    cuisine.package_ensure('unzip')

    if not cuisine.file_exists('/usr/local/bin/kataribe'):
        run('wget https://github.com/matsuu/kataribe/releases/download/v0.4.1/kataribe-v0.4.1_linux_amd64.zip')
        run('echo "34da63eb1696b964d30d9fac3b6c2778b9797eb4 kataribe-v0.4.1_linux_amd64.zip" | sha1sum -c -')
        run('unzip kataribe-v0.4.1_linux_amd64.zip kataribe')
        sudo('mv ./kataribe /usr/local/bin')
        run('rm kataribe-v0.4.1_linux_amd64.zip')
Beispiel #46
0
def invent():
    """Invent is a raspberry pi that connects to the printer. It's LAN only"""

    # Set up logging
    logs.setup()

    # Set up the firewall
    #util.put_file("config/firewalls/invent.sh", "/etc/firewall.sh", mode='755', user='******')
    #sudo("sh /etc/firewall.sh")
    #util.put_file("config/firewalls/iptables", "/etc/network/if-pre-up.d/iptables", mode='755', user='******')

    # Set up authorization to back up to germinate
    public_key = ssh.ensure_key('/var/local/germinate-backup', use_sudo=True)
    with settings(user='******', host_string='germinate'):
        files.append('/home/invent/.ssh/authorized_keys',
                     public_key,
                     use_sudo=True)
    # TODO: Actually, make /root/.ssh first
    util.put_file("config/backup/sshconfig-invent",
                  "/root/.ssh/config",
                  user='******',
                  mode='600')

    # Set up backup
    package_ensure(["rsync"])
    util.put_file("config/backup/generic-backup.sh",
                  "/var/local/generic-backup.sh",
                  mode='755',
                  user='******')
    util.put_file("config/backup/backup-exclude-base",
                  "/var/local/backup-exclude",
                  mode='644',
                  user='******')
    util.put_file("config/backup/backup-invent.sh",
                  "/etc/cron.daily/backup-invent",
                  mode='755',
                  user='******')
    # github-backup setup is manual. Look on github and at cron entry. Backs up to germinate:/data/github

    # Start a webserver
    already_installed = nginx.ensure()
    #nginx.remove_default_sites()
    if not already_installed:
        nginx.restart()  # IPv[46] listener only changes on restart

    letsencrypt.ensure()

    # invent.za3k.com
    nginx.ensure_site(
        'config/nginx/invent.za3k.com'
    )  # read-only boot and LetsEncrypt are not easy to make work together, but no TLS is okay for a LAN-only site
    util.put_dir('data/invent/public', '/var/www', mode='755', user='******')

    nginx.restart()
Beispiel #47
0
def nginx_ensure(project_path, name, template, key_env):
	with mode_sudo(), cd(project_path):
	    package_ensure('nginx') 
	    run("cp %s /etc/nginx/sites-available/%s" % (template, name))
	    file_update('/etc/nginx/sites-available/%s' % name,
            lambda x: text_template(x,key_env))
	    if not file_exists("/etc/nginx/sites-enabled/%s" % name):
	        run("ln -s -t /etc/nginx/sites-enabled /etc/nginx/sites-available/%s " % (
	            name))
	    file_unlink('/etc/nginx/sites-enabled/default')
	    run("service nginx restart")
def configure_all_schemas(root_pass='******',
                          password='******',
                          mysql_host='127.0.0.1',
                          host_allowed='127.0.0.1'):
    package_ensure('mysql-client')
    setup_schema(username='******',
                 schema_name='portal',
                 root_pass=root_pass,
                 password=password,
                 mysql_host=mysql_host,
                 host=host_allowed)
    setup_schema(username='******',
                 schema_name='keystone',
                 root_pass=root_pass,
                 password=password,
                 mysql_host=mysql_host,
                 host=host_allowed)
    setup_schema(username='******',
                 schema_name='glance',
                 root_pass=root_pass,
                 password=password,
                 mysql_host=mysql_host,
                 host=host_allowed)
    setup_schema(username='******',
                 schema_name='nova',
                 root_pass=root_pass,
                 password=password,
                 mysql_host=mysql_host,
                 host=host_allowed)
    setup_schema(username='******',
                 schema_name='cinder',
                 root_pass=root_pass,
                 password=password,
                 mysql_host=mysql_host,
                 host=host_allowed)
    setup_schema(username='******',
                 schema_name='neutron',
                 root_pass=root_pass,
                 password=password,
                 mysql_host=mysql_host,
                 host=host_allowed)
    setup_schema(username='******',
                 schema_name='accounting',
                 root_pass=root_pass,
                 password=password,
                 mysql_host=mysql_host,
                 host=host_allowed)
    setup_schema(username='******',
                 schema_name='chargeback',
                 root_pass=root_pass,
                 password=password,
                 mysql_host=mysql_host,
                 host=host_allowed)
Beispiel #49
0
def install_nginx():
    """Install nginx + uwsgi on the web servers."""
    #sudo('apt-add-repository ppa:nginx/stable')
    #sudo('sudo apt-get update')
    sudo('apt-get install nginx --assume-yes')

    # needed to compile uwsgi
    cuisine.package_ensure('libxml2-dev')
    pip('http://projects.unbit.it/downloads/uwsgi-latest.tar.gz')

    if exists('/etc/nginx/sites-enabled/default'):
        sudo('rm /etc/nginx/sites-enabled/default')
def install_supervisor():
    """Install supervisor on the web servers."""
    from .django import pip
    # ubuntu 11.04 has a bad version
    pip('elementtree')
    cuisine.package_ensure('supervisor')

    # We want to use the /init.d/ scripts
    with settings(warn_only=True):
        sudo('pkill supervisord')
    execute(stop_supervisor)
    execute(update_supervisor)
Beispiel #51
0
    def apply(self, computer):
        with prefix('export DEBIAN_FRONTEND=noninteractive'):
            cuisine.package_ensure('postfix')
            cuisine.package_ensure('mailutils')

        tmp_env = {"name": computer}
        if "name" in self.settings["params"]:
            tmp_env["name"] = self.settings["params"]["name"]
        self.push_package_file_set('postfix', computer, tmp_env)

        cuisine.sudo("/usr/bin/newaliases")
        cuisine.sudo("service postfix restart")
Beispiel #52
0
def prepare_system(admin_user, admin_group='admin'):
    provision_user(admin_user, admin_group)
    inject_ssl_pubkey(admin_user)
    firewall()
    select_package('apt')
    package_update()

    prepare_devenv()
    prepare_rbenvs(admin_user)

    package_ensure('nginx')
    package_ensure('python-pip')
    sudo('pip install supervisor')
Beispiel #53
0
def _setup_kataribe():
    cuisine.package_ensure('wget')
    cuisine.package_ensure('unzip')

    temp_dir = run('mktemp -d')
    with cd(temp_dir):
        run('wget https://github.com/matsuu/kataribe/releases/download/v0.3.3/linux_amd64.zip'
            )
        run('echo "9c4a4fe72651e33b1a6ef55f5e672fa38b755d48 linux_amd64.zip" | sha1sum -c -'
            )
        run('unzip linux_amd64.zip kataribe')
        sudo('mv ./kataribe /usr/local/bin')
    run('rm -r %s' % temp_dir)
Beispiel #54
0
def repo_rpm_init():
    ''' initialize package repo '''

    package_ensure('createrepo')

    for dist, package_format in PACKAGE_FORMAT.items():
        if package_format == 'rpm':
            dir_ensure('{0}/archive/{1}'.format(env.repo_rpm_root, dist),
                       recursive=True)
            for component in RPM_COMPONENTS:
                for arch in RPM_ARCHS:
                    path = pj(env.repo_rpm_root, dist, component, arch)
                    dir_ensure(path, recursive=True)
                    run('createrepo {}'.format(path))
def install_prerequisites():
    '''
    Installs prerequisites on monitored VMs.
    '''
    cuisine.package_ensure('gcc')
    cuisine.package_ensure('build-essential')
    cuisine.package_ensure('libssl-dev')
    cuisine.package_ensure('iptables-persistent')
Beispiel #56
0
Datei: mx.py Projekt: za3k/devops
def _spamassassin():
    select_package("apt")
    package_ensure(["spamassassin"])
    run("sa-update || true")
    put("config/dovecot/spamassassin.sieve",
        "/etc/dovecot/sieve.d",
        mode='644')
    with cd("/etc/dovecot/sieve.d"):
        run("sievec spamassassin.sieve")
    put("config/spamassassin/spamassassin", "/etc/default", mode='644')
    put("config/spamassassin/spamassassin-localspam",
        "/etc/cron.daily",
        mode='755')
    put("config/spamassassin/local.cf", "/etc/spamassassin", mode='644')
    run("update-rc.d spamassassin enable")
    run("systemctl restart spamassassin")
Beispiel #57
0
Datei: mx.py Projekt: za3k/devops
def _dovecot(database_password):
    select_package("apt")
    package_ensure([
        "dovecot-imapd", "dovecot-lmtpd", "dovecot-pgsql", "dovecot-sieve",
        "dovecot-managesieved"
    ])  # On debian will automatically be enabled
    crypto.put_cert('config/certs/imap.za3k.com.pem')
    crypto.put_key('config/keys/imap.za3k.com.key')
    put('config/dovecot/dovecot.conf', '/etc/dovecot/dovecot.conf', mode='644')
    put('config/dovecot/dovecot-sql.conf',
        '/etc/dovecot/dovecot-sql.conf',
        mode='600')
    _replace('/etc/dovecot/dovecot-sql.conf', 'DOVECOT_DATABASE_PASSWORD',
             database_password)
    dir_ensure("/etc/dovecot/sieve.d")
    run("chown vmail:vmail /etc/dovecot/sieve.d")
Beispiel #58
0
def stage7_container_midonet_cli():
    metadata = Config(os.environ["CONFIGFILE"])

    if cuisine.file_exists("/tmp/.%s.lck" % sys._getframe().f_code.co_name):
        return

    cuisine.package_ensure([
        "python-midonetclient", "python-keystoneclient", "python-glanceclient",
        "python-novaclient", "python-neutronclient"
    ])

    run("""
if [[ "%s" == "True" ]] ; then set -x; fi

#
# initialize the password cache
#
%s

API_IP="%s"
API_URI="%s"

OPENSTACK_RELEASE="%s"

source /etc/keystone/KEYSTONERC_ADMIN 2>/dev/null || source /etc/keystone/admin-openrc.sh

if [[ "kilo" == "${OPENSTACK_RELEASE}" || "liberty" == "${OPENSTACK_RELEASE}" ]]; then
    ADMIN_TENANT_ID="$(openstack project list --format csv | sed 's,",,g;' | grep -v ^ID | grep ',admin' | awk -F',' '{print $1;}' | xargs -n1 echo)"
else
    ADMIN_TENANT_ID="$(keystone tenant-list | grep admin | awk -F'|' '{print $2;}' | xargs -n1 echo)"
fi

cat >/root/.midonetrc<<EOF
[cli]
api_url = http://${API_IP}:${API_URI}
username = admin
password = ${ADMIN_PASS}
tenant = ${ADMIN_TENANT_ID}
project_id = admin
EOF

""" % (metadata.config["debug"], open(os.environ["PASSWORDCACHE"]).read(),
       metadata.containers[metadata.roles["container_midonet_api"][0]]["ip"],
       metadata.services["midonet"]["internalurl"],
       metadata.config["openstack_release"]))

    cuisine.file_write("/tmp/.%s.lck" % sys._getframe().f_code.co_name, "xoxo")