Background
In a cluster, HTCondor binaries and configuration files are placed on the head node. Worker nodes access these files via shared file system. Thus, drone rpm is designed to install on these worker nodes.Design
- The head node will install HTCondor by using normal RPM with relocate option.
- The worker node will install drone rpm which is basically a bunch of scripts that will start HTCondor from shared file system.
- Condor_master_wrapper is a python script that act like a master but it will copy the master binary to local file system before starting it. It will also update the master if there is change in the share folder.
- Profile.d script is provided so that necessary environment variables are set (PATH, CONDOR_CONFIG). Manpath is not set because man will be able to find manpages by itself.
Implementation
RPM Installation Behavior
pre (pre-install)
- Add 'HTCondor' user/group if not exists
postinst
- Add HTCondor service (chkconfig --add)
preun
- Call init script to stop HTCondor only if we are removing the last instance of HTCondor (not include upgrading). If the init script fails, abort the uninstall
- Remove HTCondor service (chkconfig --del)
postun
- Do nothing
Package Building
Related Files
File | Description |
src/condor_scripts/native/SPECS/condor-minimal.spec | Spec file |
src/condor_scripts/make_native_packages.pl | Main script |
src/condor_examples/condor.boot.vdt | Used for /etc/init.d/condor |
src/condor_examples/condor.sh | /etc/profile.d/condor.sh |
src/condor_examples/condor.csh | /etc/profile.d/condor.csh |
src/condor_examples/condor.sysconfig | Template for sysconfig file |
src/condor_examples/condor.sysconfig.drone.patch | Patch for default parameters in Drone RPM |
Build Process
After creating normal RPM, make_native_packages.pl will populate the build area with files required for building drone rpm. Then it will invoke rpmbuild to create the package.