Recipe to install and configure Pound
Project description
What is iw.recipe.pound ?
iw.recipe.pound is a buildout recipe to compile and configure Pound. It uses zc.recipe.cmmi then configure pound.cfg.
How to use iw.recipe.pound ?
As a recipe, you have to provide a part in your buildout file:
>>> import getpass >>> owner = group = getpass.getuser() >>> import os >>> data_dir = os.path.join(test_dir, 'data') >>> parts_dir = os.path.join(data_dir, 'parts') >>> buildout = {'instance': {'location': test_dir}, ... 'buildout': {'directory': test_dir, ... 'parts-directory': test_dir}} >>> name = 'pound' >>> options = {'url': 'mypackage.tgz', ... 'owner': owner, ... 'group': owner}
For each balancer you want to create, you have to define it:
>>> balancers = """\ ... one 80 127.0.0.1:8080 127.0.0.1:8081 ... two 90 127.0.0.1:8082 127.0.0.1:8083 169.1.1.2:80 ... """ >>> options['balancers'] = balancers
Each line is composed of the name and the port, and a list of backends, defines by a host and a port.
Creating the recipe:
>>> from iw.recipe.pound import Recipe >>> recipe = Recipe(buildout, name, options)
Running it:
>>> paths = recipe.install()
Checking the files created:
>>> paths '/.../tests/pound' >>> os.listdir(os.path.join(paths, 'sbin')) ['pound', 'poundctl']
Checking the pound.cfg created:
>>> cfg = os.path.join(paths, 'etc', 'pound.cfg') >>> print open(cfg).read() ## pound.cfg ## created by iw.recipe.pound <BLANKLINE> ## global options: User "tziade" Group "tziade" <BLANKLINE> ## Logging: (goes to syslog by default) ## 0 no logging ## 1 normal ## 2 extended ## 3 Apache-style (common log format) LogLevel 1 <BLANKLINE> ## Log facility -- the manpage for syslog.conf(5) lists valid values. #LogFacility daemon <BLANKLINE> ## check backend every X secs: Alive 30 <BLANKLINE> ## use hardware-accelleration card supported by openssl(1): #SSLEngine "<hw>" <BLANKLINE> ## listen, redirect and ... to: # balancer for one ListenHTTP Address 127.0.0.1 Port 80 # for webdav xHTTP 2 Service BackEnd Address 127.0.0.1 Port 8080 End BackEnd Address 127.0.0.1 Port 8081 End <BLANKLINE> # for session cookies Session Type COOKIE ID "__ac" TTL 300 End End End <BLANKLINE> # balancer for two ListenHTTP Address 127.0.0.1 Port 90 # for webdav xHTTP 2 Service BackEnd Address 127.0.0.1 Port 8082 End BackEnd Address 127.0.0.1 Port 8083 End BackEnd Address 169.1.1.2 Port 80 End <BLANKLINE> # for session cookies Session Type COOKIE ID "__ac" TTL 300 End End End <BLANKLINE> <BLANKLINE> <BLANKLINE> <BLANKLINE>
Cleaning up the files:
>>> os.system('rm -rf %s' % paths) 0