
Seeing as the power of Turbo-Hipster is in its pluggable design, this change allows the configuration to be spit up allowing each plug in to maintain it's own part of the configuration including overwriting any default configuration. There is a new configuration parameter 'conf_d', which is mapped to a directory: "conf_d": "/etc/turbo-hipster/conf.d" worker_server.py grabs all files inside this directory and attempts to load them. If it fails, the error is logged. The motivating factor for this change for me, is that it allows the deployment of turbo-hipster via puppet much simpler. The base TH puppet class will create the config.json, whereas there puppet TH plug in classes can pop extra configuration into the conf_d directory. Change-Id: Ied20b46d4caa642d130097f3fe019df9c0ec5851
121 lines
4.3 KiB
ReStructuredText
121 lines
4.3 KiB
ReStructuredText
:title: Installation
|
|
|
|
.. _gearman: http://gearman.org/
|
|
.. _zuul: http://ci.openstack.org/zuul/
|
|
|
|
Installation
|
|
============
|
|
|
|
Turbo-hipster is installed directly into your Python ``site-packages``
|
|
directory, and is then run as a service. It is managed using a configuration
|
|
file, which is in yaml format.
|
|
|
|
Installing turbo-hipster
|
|
------------------------
|
|
|
|
1. Turbo-hipster can be installed directly to your Python ``site-packages``
|
|
directory:
|
|
|
|
$ sudo python setup.py install
|
|
|
|
2. Copy the configuration file to a convenient location. By default,
|
|
turbo-hipster will look in ``/etc/turbo-hipster/config.yaml``:
|
|
|
|
$ cp -R etc/turbo-hipster /etc/
|
|
|
|
3. The turbo-hipster configuration file is in yaml format. Open the
|
|
``config.yaml`` configuration file in your preferred editor and modify it
|
|
for your environment::
|
|
|
|
**zuul_server**
|
|
A dictionary containing details about how to communicate
|
|
with zuul
|
|
**git_url**
|
|
The publicly accessible protocol and URI from where
|
|
to clone projects and zuul_ references from. For
|
|
example::
|
|
http://review.openstack.org/p/
|
|
or::
|
|
git://review.example.org
|
|
**gearman_host**
|
|
The host of gearman_. zuul talks to its workers via
|
|
the gearman protocol and while it comes with a built-
|
|
in gearman server you can use a separate one.
|
|
**gearman_port**
|
|
The port that gearman listens on.
|
|
**debug_log**
|
|
A path to the debug log. Turbo-hipster will attempt to create
|
|
the file but must have write permissions.
|
|
**jobs_working_dir**
|
|
Each job will likely need to write out log and debug
|
|
information. This defines where turbo-hipster will do that.
|
|
**git_working_dir**
|
|
turbo-hipster needs to take a copy of the git tree of a
|
|
project to work from. This is the path it'll clone into and
|
|
work from (if needed).
|
|
**pip_download_cache**
|
|
Some of turbo-hipsters task plugins download requirements
|
|
for projects. This is the cache directory used by pip.
|
|
**plugins**
|
|
A list of enabled plugins and their settings in a dictionary.
|
|
The only required parameters are *name*, which should be the
|
|
same as the folder containing the plugin module, and
|
|
*function*, which is the function registered with zuul.
|
|
Any other parameters are specified by the plugin themselves
|
|
as required.
|
|
**publish_logs**
|
|
Log results from plugins can be published using multiple
|
|
methods. Currently only a local copy is fully implemented.
|
|
**type**
|
|
The type of protocol to copy the log to. eg 'local'
|
|
**path**
|
|
A type specific parameter defining the local location
|
|
destination.
|
|
**prepend_url**
|
|
What to prepend to the path when sending the result
|
|
URL back to zuul. This can be useful as you may want
|
|
to use a script to authenticate against a swift
|
|
account or to use *laughing_spice* to format the logs
|
|
etc.
|
|
**conf_d**
|
|
A path of a directory containing pieces of json confiuration.
|
|
This is helpful when you want different plugins to add extra
|
|
or even modify the default configuration.
|
|
|
|
4. Create a turbo-hipster user:
|
|
|
|
$ useradd turbo-hipster
|
|
|
|
5. Create the directories listed in the configuration file, and give the
|
|
``turbo-hipster`` user write access:
|
|
|
|
$ mkdir -p /var/log/turbo-hipster/
|
|
$ chown turbo-hipster:turbo-hipster /var/log/turbo-hipster/
|
|
|
|
$ mkdir -p /var/lib/turbo-hipster/jobs
|
|
$ chown turbo-hipster:turbo-hipster /var/lib/turbo-hipster/jobs
|
|
|
|
$ mkdir -p /var/lib/turbo-hipster/git
|
|
$ chown turbo-hipster:turbo-hipster /var/lib/turbo-hipster/git
|
|
|
|
$ mkdir -p /var/cache/pip
|
|
$ chown turbo-hipster:turbo-hipster /var/cache/pip
|
|
|
|
6. Open the MySQL log rotation configuration file in your preferred text
|
|
editor, and edit it to ensure it is writable by ``other``:
|
|
|
|
$ vim /etc/logrotate.d/mysql-server
|
|
# edit create 640 to 644.
|
|
|
|
.. note::
|
|
The turbo-hipster source code is also available for download from
|
|
the `turbo-hipster github page <https://github.com/rcbau/turbo-hipster/>`_
|
|
|
|
$ git clone https://github.com/rcbau/turbo-hipster
|
|
|
|
.. note::
|
|
Debug logging must be configured for turbo-hipster, as it uses the Python
|
|
logging framework to capture log messages from the task plugin code.
|
|
To configure debug logging, set the ``debug_log`` configuration
|
|
setting in the ``config.yaml`` configuration file.
|