Hook to dynamically configure an HTCondor node from a git
repository.
The hook is integrated into a Condor config file to perform the following workflow:
- Fetch a git repository to a local cache
- Use patterns to select configuration files
- Dynamically include configuration in condor
To integrate the hook, use the include command
syntax in any HTCondor config file:
include command : condor-git-config https://git.mydomain.com/condor-repos/condor-configs.git
The hook requires at least Python 3.3 to run.
Installation provides the condor-git-config
executable.
All other dependencies are installed automatically.
Stable release version
pip3 install condor_git_config
Current development version
git clone https://github.com/maxfischer2781/condor-git-config.git
./condor-git-config/setup.py install
The condor-git-config
executable can use the @
[prefix character](https://docs.python.org/3/library/argparse.html#fromfile-prefix-chars)
to read arguments from files.
This allows you to prepare options externally
echo $(hostname -d) >> /etc/mycloud/domain
and have them used dynamically to adjust configuration
include command : condor-git-config --branch @/etc/mycloud/domain -- https://git.mydomain.com/condor-repos/condor-configs.git
By default, condor-git-config
will not recurse into sub-directories.
This allows you to have additional configuration, which is conditionally integrated.
For example, consider the following git repository tree:
|- commong.cfg |- security.cfg |- aaaron-cloud.cfg |- aaaron-cloud/ | |- overwrites.cfg | |- proxy.cfg |- beebee-cloud.cfg
The aaaron-cloud
folder will be ignored by default.
You can conditionally include the *-cloud.cfg
files like this:
--blacklist '.-cloud\.cfg' --whitelist @/etc/mycloud/flavour
This allows you to further include the files in aaaron-cloud
by using include
in aaaron-cloud.cfg
:
# aaaron-cloud.cfg include : $(GIT_CONFIG_CACHE_PATH)/overwrites.cfg include : $(GIT_CONFIG_CACHE_PATH)/proxy.cfg