Turbo-hipster is installed directly into your Python
directory, and is then run as a service. It is managed using a configuration
file, which is in yaml format.
1. Turbo-hipster can be installed directly to your Python
$ sudo python setup.py install
2. Copy the configuration file to a convenient location. By default,
turbo-hipster will look in
$ 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. **jobs** A list of registered jobs. **name** The name of the job to register. This is the function name for zuul's job. eg build:some_job. **plugin** (optional) The plugin to use. Defaults to shell_task. Any other variables the plugin may require for the job. **plugins** (depreciated) This is depreciated in favour of jobs (above). 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.
- 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
$ vim /etc/logrotate.d/mysql-server # edit create 640 to 644.
The turbo-hipster source code is also available for download from the turbo-hipster github page
$ git clone https://github.com/rcbau/turbo-hipster
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
setting in the
config.yaml configuration file.