This document describes how CF Engine is setup in NWO Pool and a quick reference to add new configuration to get your things done.
CF Engine has been setup with a notion of working fileset and master fileset. The master files are on grandcentral.cs.wisc.edu in /cfengine/masterfiles. The subdirectories in masterfiles directory are categorized based on their contents for better organization of the data.
This directory contains the local config files for condor
This directory contains the hawkeye modules that run on the NWO pool
This directory contains the configuration files for cfengine, ntp and several shell scripts that you want to be invoked by the cfengine.
This directory contains the source or binary packages of the software that cannot be retrieved from the web by wget directly or needs password or complete a registration process to download.
Here is an overview on how to configure CF Engine to o you task
Check with the cfengine documentation if this task is built in the cfengine and you just need to use some predefined classes/configuration for cfengine to achieve your goal. If so make the required changes to /cfengine/masterfiles/inputs/cfagent.conf and run cfrun command on grandcentral as root
If this is a non-standard task that you want to execute, write a script to do it and put the it in /cfengine/masterfiles/inputs. I strongly recommend using shell scripts (not even bash) since perl or python might not be available or setup on the new machines. If the task is very short you can just write the commands in the cfegent.conf file directly. If you have some input files that your scripts uses, put them in a appropriate subdirectory in /cfengine/masterfiles or create one subdirectory to categorize the files. Edit the cfagent config file /cfengine/masterfiles/inputs/cfagent.conf to first copy the input files to the remote machine by adding an entry to "copy:" section (look for examples in that section). Second, add an entry to the "shellcommands:" section to execute your script. Use the cfengine defined classes to handle architecture/os specific tasks.
If you want to install any component whose source can be fetched from web and follows the convention of configure, make, make install, to install the product use the update_product script.