Skip to content

Instantly share code, notes, and snippets.

@el-dude
Last active August 29, 2015 14:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save el-dude/eb9bb946f1939697deac to your computer and use it in GitHub Desktop.
Save el-dude/eb9bb946f1939697deac to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
###
import logging
from util import color_stream
handler = color_stream.ColorizingStreamHandler()
handler.setFormatter(logging.Formatter(\
"%(asctime)s [%(levelname)5s] %(name)s - %(message)s"))
root = logging.getLogger()
root.addHandler(handler)
root.setLevel(logging.WARN)
logger = logging.getLogger(__name__)
## will apply to all child modules of this package, as well
logger.setLevel(logging.DEBUG)
import re
import os, platform, sys
import urllib2
url = "http://repos.fedorapeople.org/repos/pulp/pulp/rhel-pulp.repo"
file_name = url.split('/')[-1]
u = urllib2.urlopen(url)
f = open("/etc/yum.repos.d/"+file_name, 'wb')
meta = u.info()
file_size = int(meta.getheaders("Content-Length")[0])
print "Downloading: %s Bytes: %s" % (file_name, file_size)
file_size_dl = 0
block_sz = 8192
while True:
buffer = u.read(block_sz)
if not buffer:
break
file_size_dl += len(buffer)
f.write(buffer)
status = r"%10d [%3.2f%%]" % (file_size_dl, file_size_dl * 100. / file_size)
status = status + chr(8)*(len(status)+1)
print status,
f.close()
v6 = "el6"
v7 = "el7"
os_version = platform.release()
if re.search(v6, os_version):
url = "https://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm"
mongo_start = "service mongod start"
mongo_on = "chkconfig mongod on"
qpid_start = "service qpidd start"
qpid_on = "chkconfig qpidd on"
httpd_start = "service httpd start"
httpd_on = "chkconfig httpd on"
elif re.search(v7, os_version):
url = "https://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-2.noarch.rpm"
mongo_start = "systemctl enable mongod"
mongo_on = "systemctl start mongod"
qpid_start = "systemctl enable qpidd"
qpid_on = "systemctl start qpidd"
httpd_start = "systemctl start httpd"
httpd_on = "systemctl enable httpd"
else:
#logger.error('OS %s not supported. \
# the following Versions are supported: %s %s') % ( os_version, v6, v7 )
print("ERR OS %s not supported. \
the following Versions are supported: %s %s") % ( os_version, v6, v7 )
def cmd_runner(cmd):
assert str(cmd), "ERR cmd is not defined"
run = os.system(cmd)
return run
# Pulp pkg's to isntall
pulp_pkgs = [
"mongodb-server",
"boost-1.41.0-25.el6.x86_64",
"python-ordereddict",
"python-kombu",
"python-billiard",
"pytz",
"python-setuptools",
"python-importlib",
"python-dateutil",
"pyparsing",
"python-requests",
"python-qpid-common",
"python-gofer",
"python-gofer-qpid",
"python-isodate",
"python-ldap",
"python-nectar",
"python-pulp-common",
"apr",
"apr-util",
"apr-util-ldap",
"httpd-tools",
"mailcap",
"genisoimage",
"httpd",
"m2crypto",
"mod_ssl",
"mod_wsgi",
"python-deltarpm",
"python-simplejson",
"setools-libs-python",
"createrepo",
"python-lxml",
"python-pulp-rpm-common",
"python-rhsm",
"qpid-cpp-server",
"qpid-cpp-server-store"]
pulp_grp_install = "pulp-server-qpid"
# Install EPEL Repo:
# If this doesn't work, like if you get an error about
# Error: Package: pulp-server-2.5.0-1.el6.noarch (pulp-2-stable)
# Then make sure that the Repo is enabled in
# /etc/yum.repos.d/epel.repo
# it should be set to: enabled=1
install_epel = "rpm -Uvh %s" % url
cmd_runner(install_epel)
# Install Pulp Pkg's:
for pkg in pulp_pkgs:
yum_install = "yum install %s -y" % pkg
cmd_runner(yum_install)
grp_install_cmd = "yum groupinstall %s -y" % pulp_grp_install
cmd_runner(grp_install_cmd)
### Post install chkconfig/systemd:
# Enable mongodb:
cmd_runner(mongo_start)
cmd_runner(mongo_on)
# Enable qpid:
cmd_runner(qpid_start)
cmd_runner(qpid_on)
### Initialize Pulp’s database:
initdb = "sudo -u apache pulp-manage-db"
cmd_runner(initdb)
# Enable httpd:
cmd_runner(httpd_start)
cmd_runner(httpd_on)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment