- Organize the configuration of your data center hosts in a subversion repository.
config-rpm-makeras post-commit hook of your configuration repository:
- Builds RPMs containing the configuration for each host.
- Builds only the configuration RPMs for the affected hosts.
- Uploads configuration RPMs to a repository using a configurable command.
Usage: config_rpm_maker repo-url revision [options] Arguments: repo-url URL to subversion repository or absolute path on localhost revision subversion revision for which the configuration rpms are going to be built Options: -h, --help show this help message and exit --config-viewer-only Only generate files for config viewer. Skip RPM build and upload. --debug force DEBUG log level on console --no-clean-up do not clean up working directory --no-syslog switch logging of debug information to syslog off --rpm-upload-cmd=RPM_UPLOAD_COMMAND Overwrite rpm_upload_config in config file --verbose increase number of logging messages --version show version
config-rpm-maker /path-to/your/svn/repository/ 123
Builds all relevant configuration RPMs from the repository at
file:///path-to/your/svn/repository/ in revision
config-rpm-maker file://host/path-to/your/svn/repository/ 123
config-rpm-maker svn://host/repository/ 123
- Creates data for configviewer (visualises the configuration of your hosts)
- Templating for your configuration files.
- Preserves encoding and will not replace tokens within binary files see TokenReplace.filter_file
If you simply want to try and understand how yadt-config-rpm-maker works we recommend to "setup a devlopment enviroment".
Step by Step Installation
Install the build dependencies
sudo yum install python-devel python-setuptools python-mock mock -y
sudo yum install subversion rpm-build pysvn python-yaml -y
Build the source rpm
./setup.py bdist_rpm --source-only
Build the rpm from the source rpm using mock.
sudo mock rebuild yadt-config-rpm-maker-2.0-1.src.rpm -v
Set up a subversion repository. There are several tutorials available in the web. Some examples:
config-rpm-maker in a
yadt-config-rpm-maker is configured using a yaml file. Read more in "Configuration Documentation".
Example Content for Configuration Repository
The testdata directory contains an example tree for a config repository. It also contains the SPEC file template that is used to build the config RPMs. Use this as a starting point to setup your own environment.
Setup a Development Environment
yadt-config-rpm-maker is created for Red Hat Linux Distributions.
We recommend to develop in a vagrant box. Read our tutorial "Build and install in a vagrant box".
Of course you can set up a development environment on other platforms too:
- How to develop under CentOS
- How to develop under OpenSUSE
- How to develop under Debian / Mint / Ubuntu
python setup.py test
Run the checks to see if you have import errors by executing:
PYTHONPATH=src python test/__init__.py
When you run the integration tests yadt-config-rpm-maker will build test RPMs.
Measuring test coverage using coverage
coverage run --branch setup.py test && coverage report --omit=test/*,/usr/*,setup.py,src/config_rpm_maker/utilities/magic.py
Execution in the working directory
config-rpm-maker script allows you to execute yadt-config-rpm-maker in your working directory.
Build yadt-config-rpm-maker RPM
python setup.py bdist_rpm
Please don't forget to add our repository as remote to your fork
git remote add upstream https://github.com/yadt/yadt-config-rpm-maker.git
... and pull from time to time via ...
git remote update git merge upstream/master --ff-only
... to omit merge problems.
- Sebastian Herold
- Schlomo Schapiro
- Ingmar Krusch
- Maximillien Riehl
- Oliver Schmitz-Hennemann
- Michael Gruber
- Hasan Hosgel
- Konrad Hosemann
yadt-config-rpm-maker Copyright (C) 2011-2014 Immobilien Scout GmbH
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.